﻿// Generated file
using FlowgraphViewer.Model;
using System.Collections.Generic;
using System;


namespace FlowgraphViewer.Services
{
    public class CrysisNodeService : INodeService
    {
        private CrysisNodeService()
        {

        }

        private static CrysisNodeService _instance;

        public static CrysisNodeService Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new CrysisNodeService();
                return _instance;
            }
        }


        public System.Collections.Generic.IEnumerable<FlowNode> RegisterNodes()
        {
            List<FlowNode> toReturn = new List<FlowNode>();

            FlowNode node;


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:50bullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AACannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AARocketLauncher", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAlertMe", "generic AI signal");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAlertness", "The highest level of alertness of any agent in the level");


            node.Outputs.Add(new FlowNodeItem { Name = "alertness", TechnicalName = "alertness", Description = "0 - green 1 - orange 2 - red", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "green", TechnicalName = "green", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "orange", TechnicalName = "orange", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "red", TechnicalName = "red", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AIAlertness", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Green", TechnicalName = "Green", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Orange", TechnicalName = "Orange", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Red", TechnicalName = "Red", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Green", TechnicalName = "Green", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Orange", TechnicalName = "Orange", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Red", TechnicalName = "Red", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AIAnchor", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Use", TechnicalName = "Use", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Use", TechnicalName = "Use", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAnim", "Plays animation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution (or stops the action)", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "animstateEx_name", TechnicalName = "animstateEx_name", Description = "name of animation to be played", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Method", TechnicalName = "signal", Description = "which method to use", Type = EFlowNodeItemType.Integer, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "start", TechnicalName = "start", Description = "activated on animation start", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "AI:AIAnimEx", "Plays an exactly positioned animation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "Sync", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "OneShot", TechnicalName = "OneShot", Description = "True if it's an one shot animation (signal) False if it's a looping animation (action)", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "animstateEx_Animation", TechnicalName = "animstateEx_Animation", Description = "name of animation to be played", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "speed while approaching the point", Type = EFlowNodeItemType.Integer, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stance", TechnicalName = "Stance", Description = "body stance while approaching the point", Type = EFlowNodeItemType.Integer, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "where to play the animation", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "StartRadius", TechnicalName = "StartRadius", Description = "tolerance from where to start the animation", Type = EFlowNodeItemType.Vector, Value = "0.1,0.1,0.1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Direction", TechnicalName = "Direction", Description = "forward dir. while playing the animation", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "DirTolerance", TechnicalName = "DirTolerance", Description = "direction tolerance", Type = EFlowNodeItemType.Float, Value = 180 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetRadius", TechnicalName = "TargetRadius", Description = "tolerance where to end the animation", Type = EFlowNodeItemType.Float, Value = 0.050000001 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "start", TechnicalName = "start", Description = "activated on animation start", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAttTarget", "Outputs AI's attention target");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Attention target position", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Entity id of attention target", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "none", TechnicalName = "none", Description = "Activated when there's no attention target", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAwareness", "Outputs AI's Awareness");


            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIAwarness", "Global AI enemies awareness of the player");


            node.Outputs.Add(new FlowNodeItem { Name = "awareness", TechnicalName = "awareness", Description = "Global AI enemies awareness of the player 0 - Minimum (Green) 100 - Maximum (Red)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AICheckInBox", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Empty", TechnicalName = "Empty", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Occupied", TechnicalName = "Occupied", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "AI:AICheckStates", "checks smart object states of the owner if they match the specified pattern");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "Sync", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "sopattern_Pattern", TechnicalName = "sopattern_Pattern", Description = "states pattern to check", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "outputs the EntityId of the owner entity if its current smart object states are matching with the pattern", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "outputs the EntityId of the owner entity if its current smart object states are not matching with the pattern", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIDropObject", "drops grabbed object");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "impulse", TechnicalName = "impulse", Description = "use for throwing", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIEnable", "Plays an Animation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable AI for target entity", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disable AI for target entity", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "AI:AIEnableShape", "Enable or Disable AIShape.");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "enable", Description = "Enables the AI shape", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "disable", Description = "Disables the AI shape", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ShapeName", TechnicalName = "ShapeName", Description = "Name of the shape to set as the territory.", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "AI:AIEnterVehicle", "makes ai enter specified seat of specified vehicle");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "VehicleId", TechnicalName = "VehicleId", Description = "vehicle to be entered", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Seat", TechnicalName = "SeatNumber", Description = "seat to be entered", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Fast", TechnicalName = "Fast", Description = "skip approaching and playing entering animation", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIExecute", "Executes an AI Action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ObjectId", TechnicalName = "objectId", Description = "Entity ID of the object on which the agent should execute AI Action", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Action", TechnicalName = "soaction_action", Description = "AI action to be executed", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "MaxAlertness", TechnicalName = "maxAlertness", Description = "maximum alertness which allows execution (0, 1 or 2)", Type = EFlowNodeItemType.Integer, Value = 2 });
            node.Inputs.Add(new FlowNodeItem { Name = "HighPriority", TechnicalName = "HighPriority", Description = "action priority - use to force the action to be finished (except if alertness get higher)", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AIFlashbangs", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIFollow", "vehicles convoys linker");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "leaderId", TechnicalName = "leaderId", Description = "whom to follow", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIFollowPath", "follow path action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "PathFindToStart", TechnicalName = "PathFindToStart", Description = "Path-find to start of path", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reverse", TechnicalName = "Reverse", Description = "Reverse the path direction", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StartNearest", TechnicalName = "StartNearest", Description = "Starts the path at nearest point on path", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Loops", TechnicalName = "Loops", Description = "Number of times to loop around the path (-1 = forever)", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "PathName", TechnicalName = "PathName", Description = "Name of the path to follow", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Succeed", TechnicalName = "Succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Fail", TechnicalName = "Fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIFollowPathSpeedStance", "follow path speed stance action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "PathFindToStart", TechnicalName = "PathFindToStart", Description = "Path-find to start of path", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reverse", TechnicalName = "Reverse", Description = "Reverse the path direction", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StartNearest", TechnicalName = "StartNearest", Description = "Starts the path at nearest point on path", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Loops", TechnicalName = "Loops", Description = "Number of times to loop around the path (-1 = forever)", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "path_name", TechnicalName = "path_name", Description = "Name of the path to follow", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "run", TechnicalName = "run", Description = "0=very slow 1=normal (walk) 2=fast (run) 3=very fast (sprint) -ve should reverse", Type = EFlowNodeItemType.Integer, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stance", TechnicalName = "stance", Description = "0-prone 1-crouch 2-combat 3-combat alerted 4-relaxed 5-stealth", Type = EFlowNodeItemType.Integer, Value = 4 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIFormation", "create formation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "fName", TechnicalName = "fName", Description = "formation name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIFormationJoin", "joins formation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution (or stops the action)", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "LeaderId", TechnicalName = "ownerId", Description = "the owner of the formation to be joined", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Succeed", TechnicalName = "Succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Fail", TechnicalName = "Fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGoto", "goto action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "EndAccuracy", TechnicalName = "distance", Description = "How accurately to position at the path end", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StopDistance", TechnicalName = "StopDistance", Description = "Stop this amount before the end of the path", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGotoSpeedStance", "goto speed stance action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "EndAccuracy", TechnicalName = "distance", Description = "How accurately to position at the path end", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StopDistance", TechnicalName = "StopDistance", Description = "Stop this amount before the end of the path", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "run", TechnicalName = "run", Description = "0=very slow 1=normal (walk) 2=fast (run) 3=very fast (sprint) -ve should reverse", Type = EFlowNodeItemType.Integer, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stance", TechnicalName = "stance", Description = "0-prone 1-crouch 2-combat 3-combat alerted 4-relaxed 5-stealth", Type = EFlowNodeItemType.Integer, Value = 4 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGrabObject", "grabs an object");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "objectId", TechnicalName = "objectId", Description = "object to be grabbed", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AIGrenades", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGroupAlertness", "The highest level of alertness of any agent in the group.");

            node.Inputs.Add(new FlowNodeItem { Name = "groupID", TechnicalName = "groupID", Description = "The group ID of the group to get the alertness from", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "alertness", TechnicalName = "alertness", Description = "0 - green 1 - orange 2 - red", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "green", TechnicalName = "green", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "orange", TechnicalName = "orange", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "red", TechnicalName = "red", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGroupBeacon", "Outputs AI Group's beacon position");

            node.Inputs.Add(new FlowNodeItem { Name = "groupID", TechnicalName = "groupID", Description = "The group ID of the group to get the beacon from", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Beacon position", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGroupCount", "The highest level of alertness of any agent in the group.");

            node.Inputs.Add(new FlowNodeItem { Name = "groupID", TechnicalName = "groupID", Description = "The group ID of the group to get the alertness from", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "count", TechnicalName = "count", Description = "The number of agents in a group.", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "empty", TechnicalName = "empty", Description = "Triggered when the whole group is wasted.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIGroupID", "Sets and outputs AI's group ID");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "sink", TechnicalName = "sink", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "groupID", TechnicalName = "groupID", Description = "New group ID to set to the entity.", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "groupID", TechnicalName = "groupID", Description = "AI Group ID of the entity", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIIgnore", "switching species hostility on/off (makes AI ignore enemies/be ignored)");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hostile", TechnicalName = "Hostile", Description = "Default perception", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Ignore", TechnicalName = "Ignore", Description = "Make it ignore enemies/be ignored", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AILookAt", "look at point or direction");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Point", TechnicalName = "pos", Description = "point to look at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Direction", TechnicalName = "Direction", Description = "direction to look at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "how long to look at [in seconds] - 0=forever", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "AI:AILookAtPoint", "look at point or direction");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Point", TechnicalName = "pos", Description = "point to look at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Direction", TechnicalName = "Direction", Description = "direction to look at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "how long to look at [in seconds] - 0=forever", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "AI:AIMergeGroups", "Merges AI group 'from' to group 'to'.");

            node.Inputs.Add(new FlowNodeItem { Name = "sink", TechnicalName = "sink", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "fromID", TechnicalName = "fromID", Description = "The group which is to be merged.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "toID", TechnicalName = "toID", Description = "The group to merge to.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "enableFromGroup", TechnicalName = "enableFromGroup", Description = "Set if the members of the 'from' group should be enabled before merging.", Type = EFlowNodeItemType.Boolean, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIModifyStates", "Adds/removes smart object states");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "sostates_states", TechnicalName = "sostates_states", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AIReinforcementSpot", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Called", TechnicalName = "Called", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "GroupID", TechnicalName = "GroupID", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AISetCharacter", "Changes AI Character");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "aicharacter_character", TechnicalName = "aicharacter_character", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AISetNavCostFactor", "Set navigation cost factor for travelling through a region");

            node.Inputs.Add(new FlowNodeItem { Name = "sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Factor", TechnicalName = "Factor", Description = "Nav cost factor. <0 disables navigation. 0 has no effect. >0 discourages navigation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "NavModifierName", TechnicalName = "NavModifierName", Description = "Name of the cost-factor navigation modifier", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Done", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "AI:AISetState", "Changes Smart Object State");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "sostate_State", TechnicalName = "sostate_State", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIShootAt", "shoots at point");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetPos", TechnicalName = "targetPos", Description = "Position to shoot or aim at (dynamically updated). If TargetId is specified it will override this parameter.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "time", Description = "How long to shoot", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "ShotsCount", TechnicalName = "shots", Description = "How many shots to do", Type = EFlowNodeItemType.Integer, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "AimOnly", TechnicalName = "AimOnly", Description = "Only aim at target position instead of shooting", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "Entity to shoot or aim at (dynamically updated), uses the position the AI system aims at if the entity has AI object. If not set TargetPos is used instead.", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnShoot", TechnicalName = "OnShoot", Description = "shot is done", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.AI, "AI:AISignal", "Special signals to control the AI.");


            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AISmokeGrenades", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AISpawner", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AutoDisableOff", TechnicalName = "AutoDisableOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AutoDisableOn", TechnicalName = "AutoDisableOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Limit", TechnicalName = "Limit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AISpeed", "movement speed controller");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "run", TechnicalName = "run", Description = "0=very slow 1=normal (walk) 2=fast (run) 3=very fast (sprint) -ve should reverse", Type = EFlowNodeItemType.Integer, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIStance", "body stance controller");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stance", TechnicalName = "stance", Description = "0-prone 1-crouch 2-combat 3-combat alerted 4-relaxed 5-stealth", Type = EFlowNodeItemType.Integer, Value = 4 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "AI:AIUnload", "unloads vehicle");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Seat", TechnicalName = "Seat", Description = "seat(s) to be unloaded", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIUseObject", "Uses an object");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "objectId", TechnicalName = "objectId", Description = "Entity ID of the object which should be used by the agent", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIWeaponDraw", "draws his weapon");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIWeaponHolster", "holsters his weapon");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AIWeaponSelect", "selects specified weapon");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "weapon", TechnicalName = "weapon", Description = "name of weapon to be selected", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:AND", "Do logical operation on input ports and outputs result to [out] port. True port is triggered if the result was true, otherwise the false port is triggered.");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "triggered if out is true", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "triggered if out is false", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:APCCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:APCCannon AscMod", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:APCRocketLauncher", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AVMine", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Abs", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=|A|", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=|A|", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Weapon:Accessory", "Attach/Detach [Accessory] from Actor's weapon [Weapon]. Both must be in the Inventory.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attach", TechnicalName = "Attach", Description = "Trigger to attach accessory on the Actor's weapon", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Detach", TechnicalName = "Detach", Description = "Trigger to detach accessory from the Actor's weapon", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "Name of weapon the accessory should be attached/detached", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Accessory", TechnicalName = "Accessory", Description = "Name of accessory", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Attached", TechnicalName = "Attached", Description = "Triggered if accessory was attached.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Detached", TechnicalName = "Detached", Description = "Triggered if accessory was detached.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Weapon:AccessoryChanged", "Listens for the Player's accessory changes");

            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "Restrict listening on this weapon. Empty=Listen for all", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Item", TechnicalName = "Item", Description = "Restrict listening for this accessory. Empty=Listen for all", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "Weapon name on Accessory change", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "AccessoryAdded", TechnicalName = "AccessoryAdded", Description = "Accessory was added. Accessory Name will be outputted.", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "AccessoryRemoved", TechnicalName = "AccessoryRemoved", Description = "Accessory was removed. Accessory Name will be outputted.", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:ActionAbort", "Use this node to define clean-up procedure executed when AI Action is aborted.");

            node.Inputs.Add(new FlowNodeItem { Name = "Abort", TechnicalName = "Abort", Description = "Aborts execution of AI Action", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "UserId", TechnicalName = "UserId", Description = "Entity ID of the agent executing AI Action (activated on abort)", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectId", TechnicalName = "ObjectId", Description = "Entity ID of the object on which the agent is executing AI Action (activated on abort)", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:ActionEnd", "Use this node to end the AI Action graph.");

            node.Inputs.Add(new FlowNodeItem { Name = "end", TechnicalName = "end", Description = "ends execution of AI Action reporting it as succeeded", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "cancel", TechnicalName = "cancel", Description = "ends execution of AI Action reporting it as failed", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Input:ActionFilter", "FlowNode to enable/disable ActionFilters");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Trigger to enable ActionFilter", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Trigger to disable ActionFilter", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Filter", TechnicalName = "Filter", Description = "Action Filter", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Triggered when enabled.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disabled", TechnicalName = "Disabled", Description = "Triggered when disabled.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Physics:ActionImpulse", "Applies an impulse on an entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "activate", TechnicalName = "activate", Description = "Trigger the impulse", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "impulse", TechnicalName = "impulse", Description = "Impulse vector (in world coordinate space)", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "angImpulse", TechnicalName = "angImpulse", Description = "The angular impulse (in world coordinate space)", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Point", TechnicalName = "Point", Description = "Point of application (optional - in world coordinate space)", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:ActionStart", "Represents the User and the used Object of an AI Action. Use this node to start the AI Action graph.");


            node.Outputs.Add(new FlowNodeItem { Name = "UserId", TechnicalName = "UserId", Description = "Entity ID of the agent executing AI Action", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectId", TechnicalName = "ObjectId", Description = "Entity ID of the object on which the agent is executing AI Action", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:ActorCheckHealth", "Check if health of entity (actor) is in range [MinHealth, MaxHealth]");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to check health", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "MinHealth", TechnicalName = "MinHealth", Description = "Lower limit of range", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "MaxHealth", TechnicalName = "MaxHealth", Description = "Upper limit of range", Type = EFlowNodeItemType.Integer, Value = 100 });

            node.Outputs.Add(new FlowNodeItem { Name = "InRange", TechnicalName = "InRange", Description = "True if Health is in range, False otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:ActorGetHealth", "Get health of an entity (actor)");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to get the current health", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Health", TechnicalName = "Health", Description = "Current health of entity", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:ActorGrabObject", "Target entity will try to grab the input object, respectively drop/throw its currently grabbed object.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "objectId", TechnicalName = "objectId", Description = "Entity to grab", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "grab", TechnicalName = "grab", Description = "Pulse this to grab object.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "drop", TechnicalName = "drop", Description = "Pulse this to drop currently grabbed object.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "throw", TechnicalName = "throw", Description = "If true, object is thrown forward.", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "success", TechnicalName = "success", Description = "true if object was grabbed/dropped successfully", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "grabbedObjId", TechnicalName = "grabbedObjId", Description = "Currently grabbed object, or 0", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Game:ActorSensor", "Tracks the attached Entity and its Vehicle-related actions");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Trigger to enable", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Trigger to enable", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "EnterVehicle", TechnicalName = "EnterVehicle", Description = "Triggered when entering a vehicle", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ExitVehicle", TechnicalName = "ExitVehicle", Description = "Triggered when exiting a vehicle", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SeatChange", TechnicalName = "SeatChange", Description = "Triggered when seat has changed", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemPickedUp", TechnicalName = "ItemPickedUp", Description = "Triggered when an item is picked up", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemDropped", TechnicalName = "ItemDropped", Description = "Triggered when an item is dropped", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemUsed", TechnicalName = "ItemUsed", Description = "Triggered when an item is used", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "NPCGrabbed", TechnicalName = "NPCGrabbed", Description = "Triggered when an NPC is grabbed", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "NPCThrown", TechnicalName = "NPCThrown", Description = "Triggered when an NPC is thrown", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectGrabbed", TechnicalName = "ObjectGrabbed", Description = "Triggered when an object is grabbed", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectThrown", TechnicalName = "ObjectThrown", Description = "Triggered when an object is thrown", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StanceChanged", TechnicalName = "StanceChanged", Description = "Triggered when Stance changed. 0=Stand,1=Crouch,2=Prone,3=Relaxed,4=Stealth,5=Swim,6=ZeroG", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SpecialMove", TechnicalName = "SpecialMove", Description = "Triggered On SpecialMove. 0=Jump,1=SpeedSprint,2=StrengthJump", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnDeath", TechnicalName = "OnDeath", Description = "Triggered when Actor dies. Outputs 0 if not god. 1 if god.", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:ActorSetHealth", "Set health of an entity (actor)");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to set health", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Health value to be set on entity when Trigger is activated", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Health", TechnicalName = "Health", Description = "Current health of entity (activated when Trigger is activated)", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Add", "[out] = [A] + [B]");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:AddAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Add", TechnicalName = "Add", Description = "Connect event here to add the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "The type of ammo to add to the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "Amount", Description = "The amount of ammo to add to the inventory", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "true if the ammo was actually added, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:AddEquipPack", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to give the pack", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "equip_Pack", TechnicalName = "equip_Pack", Description = "Name of the pack", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:AddItem", "");

            node.Inputs.Add(new FlowNodeItem { Name = "add", TechnicalName = "add", Description = "Connect event here to add the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Item", TechnicalName = "item", Description = "The item to add to the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ItemType", TechnicalName = "ItemType", Description = "Select from which items to choose", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Unique", TechnicalName = "Unique", Description = "If true, only adds the item if the inventory doesn't already contain such an item", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "true if the item was actually added, false if the player already had the item", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:AddVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=A+B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out=A+B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=A+B", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AdvancedDoor", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Unlock", TechnicalName = "Unlock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Breached", TechnicalName = "Breached", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Unlock", TechnicalName = "Unlock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:AirstrikeControl", "HUD Airstrike Control");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable Airstrike", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disable Airstrike", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Succeeded", TechnicalName = "Succeeded", Description = "Notify HUD that Airstrike succeeded", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Failed", TechnicalName = "Failed", Description = "Notify HUD that Airstrike failed", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_1", TechnicalName = "EntityId_1", Description = "Potential Target Entity 1", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_2", TechnicalName = "EntityId_2", Description = "Potential Target Entity 2", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_3", TechnicalName = "EntityId_3", Description = "Potential Target Entity 3", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_4", TechnicalName = "EntityId_4", Description = "Potential Target Entity 4", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_5", TechnicalName = "EntityId_5", Description = "Potential Target Entity 5", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_6", TechnicalName = "EntityId_6", Description = "Potential Target Entity 6", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_7", TechnicalName = "EntityId_7", Description = "Potential Target Entity 7", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId_8", TechnicalName = "EntityId_8", Description = "Potential Target Entity 8", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "StartAirstrike", TechnicalName = "StartAirstrike", Description = "Triggered with EntityId to start Airstrike", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CancelAirstrike", TechnicalName = "CancelAirstrike", Description = "Triggered with EntityId to cancel Airstrike", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "AI:AlertnessFilter", "Filters the inputs depending on owner's AI alertness level.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Threshold", TechnicalName = "Threshold", Description = "The alertness level needed to output the values on the Input port to the High port. If current alertness is less than this then the values are sent to the Low output port.", Type = EFlowNodeItemType.Integer, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input", TechnicalName = "Input", Description = "The group ID of the group to get the alertness from", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Low", TechnicalName = "Low", Description = "Outputs here all values passed on Input if current alertness is less than threshold value", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "High", TechnicalName = "High", Description = "Outputs here all values passed on Input if current alertness is equal or greater than threshold value", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienCloak", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienCore", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienEnergyPoint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:AlienInterference", "Alien interference effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "AlienInterference_Amount", Description = "Sets alien interference amount", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienMount", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienPowerCore", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AlienTurret", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableTurret", TechnicalName = "DisableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableTurret", TechnicalName = "EnableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Alien warrior", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableZeroG", TechnicalName = "DisableZeroG", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableZeroG", TechnicalName = "EnableZeroG", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Collapsed", TechnicalName = "Collapsed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Collapsing", TechnicalName = "Collapsing", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Logic:All", "All - Triggers output when all connected inputs are triggered.");

            node.Inputs.Add(new FlowNodeItem { Name = "in1", TechnicalName = "in1", Description = "Input 1", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in2", TechnicalName = "in2", Description = "Input 2", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in3", TechnicalName = "in3", Description = "Input 3", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in4", TechnicalName = "in4", Description = "Input 4", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in5", TechnicalName = "in5", Description = "Input 5", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in6", TechnicalName = "in6", Description = "Input 6", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Reset", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "Output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AmbientVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:AnglesToDir", "");

            node.Inputs.Add(new FlowNodeItem { Name = "angles", TechnicalName = "angles", Description = "Input angles.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "dir", TechnicalName = "dir", Description = "Output direction vector.", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Output roll.", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AnimDoor", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Unlock", TechnicalName = "Unlock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Unlock", TechnicalName = "Unlock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphCheckOutput", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Name", TechnicalName = "Name", Description = "Name of the output", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "CheckValue", TechnicalName = "CheckValue", Description = "Name of the output", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OnEqual", TechnicalName = "OnEqual", Description = "Output a string whenever the animation graph output is set", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnNotEqual", TechnicalName = "OnNotEqual", Description = "Output a string whenever the animation graph output is set", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Equal", TechnicalName = "Equal", Description = "Output a string whenever the animation graph output is set", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphControl", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Pause", TechnicalName = "Pause", Description = "Pauses AnimationGraph updates of the attached entity", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphLockInput", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "Causes the node to set its value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Unlock", TechnicalName = "Unlock", Description = "Causes the node to set its value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Input", TechnicalName = "Input", Description = "InstantZDelta", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphReset", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Causes the animation graph to lose its state", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphSetInput", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Causes the node to set its value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Input", TechnicalName = "Input", Description = "Signal", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "noneValue", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when the input is set", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AnimGraphWatchOutput", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Name", TechnicalName = "Name", Description = "Name of the output", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Output a string whenever the animation graph output is set", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AnimObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "RagDollize", TechnicalName = "RagDollize", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ResetAnimation", TechnicalName = "ResetAnimation", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StartAnimation", TechnicalName = "StartAnimation", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StopAnimation", TechnicalName = "StopAnimation", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "RagDollized", TechnicalName = "RagDollized", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:Any", "Port joiner - triggers it's output when any input is triggered");

            node.Inputs.Add(new FlowNodeItem { Name = "in1", TechnicalName = "in1", Description = "Input 1", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in2", TechnicalName = "in2", Description = "Input 2", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in3", TechnicalName = "in3", Description = "Input 3", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in4", TechnicalName = "in4", Description = "Input 4", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in5", TechnicalName = "in5", Description = "Input 5", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in6", TechnicalName = "in6", Description = "Input 6", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "Output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaBezierVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaBox", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaRiver", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaRoad", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaShape", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaSphere", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AreaTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enter", TechnicalName = "Enter", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Leave", TechnicalName = "Leave", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enter", TechnicalName = "Enter", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Leave", TechnicalName = "Leave", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian50Cal", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AsianCoaxialGun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian aaa", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian apc", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian helicopter", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Debug", TechnicalName = "Debug", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Debug", TechnicalName = "Debug", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian ltv", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian patrolboat", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian tank", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Asian truck", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AssaultScope", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AttachChild", "Attach Child Entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attach", TechnicalName = "Attach", Description = "Trigger to attach entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Child", TechnicalName = "Child", Description = "Child Entity to Attach", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "KeepTransform", TechnicalName = "KeepTransform", Description = "Child entity will remain in the same transformation in world space", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisablePhysics", TechnicalName = "DisablePhysics", Description = "Force disable physics of child entity on attaching", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:Attachment", "Handle vehicle entity attachments");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attachment", TechnicalName = "Attachment", Description = "Name of Attachment socket (see Vehicle Editor, listbox planned here)", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EntityId", TechnicalName = "AttachedId", Description = "Entity to attach/detach", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attach", TechnicalName = "Attach", Description = "Trigger to attach the entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Detach", TechnicalName = "Detach", Description = "Trigger to detach the entity", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:AttachmentControl", "[CUTSCENE ONLY] Show/Hide Character Attachments.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attachment", TechnicalName = "Attachment", Description = "Attachment", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Show the attachment", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Hide the attachment", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Shown", TechnicalName = "Shown", Description = "Triggered when Shown", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hidden", TechnicalName = "Hidden", Description = "Triggered when Hidden", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AutoAA", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:AutoDisable", "controls AutoDisable ");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ON", TechnicalName = "ON", Description = "allow AutoDisable for target entity", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OFF", TechnicalName = "OFF", Description = "no AutoDisable for target entity", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Weapon:AutoSightWeapon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "enemy", TechnicalName = "enemy", Description = "Connect the enemy position vector to shoot here", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AutoTurret", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableTurret", TechnicalName = "DisableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableTurret", TechnicalName = "EnableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AutoTurretAA", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableTurret", TechnicalName = "DisableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableTurret", TechnicalName = "EnableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:AvengerCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BasicEntity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "RagDollize", TechnicalName = "RagDollize", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "RagDollized", TechnicalName = "RagDollized", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BeamEntity", "Beam an Entity to a new Position");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Beam", TechnicalName = "Beam", Description = "Trigger to beam the Entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "Position in World Coords", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Rotation", TechnicalName = "Rotation", Description = "Rotation [Degrees] in World Coords. (0,0,0) leaves Rotation untouched.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Scale", TechnicalName = "Scale", Description = "Scale. (0,0,0) leaves Scale untouched.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Binoculars", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:Binoculars", "HUD Binoculars");

            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Show the HUD binoculars interface.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Hide the HUD binoculars interface.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "HideNoFade", TechnicalName = "HideNoFade", Description = "Hide the HUD binoculars interface without fade-out.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "TaggedEntity", TechnicalName = "TaggedEntity", Description = "Inform when this entity is tagged. If not set, any entity is reported.", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "PlayZoomIn", TechnicalName = "PlayZoomIn", Description = "Play the HUD Binoculars Zoom-In sound.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "PlayZoomOut", TechnicalName = "PlayZoomOut", Description = "Play the HUD Binoculars Zoom-In sound.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "Triggered when Binoculars are activated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "Triggered when Binoculars are deactivated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EntityTagged", TechnicalName = "EntityTagged", Description = "Triggered when Entity has been tagged", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Birds", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:Blocker", "Blocker - If enabled blocks [In] signals, otherwise passes them to [Out]");

            node.Inputs.Add(new FlowNodeItem { Name = "Block", TechnicalName = "Block", Description = "If true blocks [In] data. Otherwise passes [In] to [Out]", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Input", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "Output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Boid", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Animations:BoneInfo", "Outputs information of the bone [BoneName] of the character of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "bone_BoneName", TechnicalName = "bone_BoneName", Description = "Name of Bone to get info for", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "LocalPos", TechnicalName = "LocalPos", Description = "Position of bone in Local Space", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "LocalRot", TechnicalName = "LocalRot", Description = "Rotation of bone in Local Space", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WorldPos", TechnicalName = "WorldPos", Description = "Position of bone in World Space", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WorldRot", TechnicalName = "WorldRot", Description = "Rotation of bone in World Space", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BreakableObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OnBreak", TechnicalName = "OnBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OnFirstBreak", TechnicalName = "OnFirstBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "OnBreak", TechnicalName = "OnBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnFirstBreak", TechnicalName = "OnFirstBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BroadcastEvent", "This node broadcasts specified event to all entities which names contain sub string in parameter name");

            node.Inputs.Add(new FlowNodeItem { Name = "send", TechnicalName = "send", Description = "When signal recieved on this input entity event is broadcasted", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "event", TechnicalName = "event", Description = "Entity event to be sent", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "Any part of the entity name to receive event", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Bugs", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BuildingLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BuildingParticle", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Restart", TechnicalName = "Restart", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Restarted", TechnicalName = "Restarted", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BuildingSound", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DonePlaying", TechnicalName = "DonePlaying", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BunkerBuster", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:BuyZone", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:C4", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Log:CSVDumper", "");

            node.Inputs.Add(new FlowNodeItem { Name = "filename", TechnicalName = "filename", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value0", TechnicalName = "value0", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value1", TechnicalName = "value1", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value2", TechnicalName = "value2", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value3", TechnicalName = "value3", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value4", TechnicalName = "value4", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value5", TechnicalName = "value5", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value6", TechnicalName = "value6", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value7", TechnicalName = "value7", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value8", TechnicalName = "value8", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "value9", TechnicalName = "value9", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Camera:Camera", "");

            node.Inputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Input camera position.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "dir", TechnicalName = "dir", Description = "Input camera direction.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Input camera roll.", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Current camera position.", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "dir", TechnicalName = "dir", Description = "Current camera direction.", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Current camera roll.", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CameraShake", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Shake", TechnicalName = "Shake", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Camera:CameraShake", "");

            node.Inputs.Add(new FlowNodeItem { Name = "t_Activate", TechnicalName = "t_Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Strength", TechnicalName = "Strength", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Frequency", TechnicalName = "Frequency", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CameraSource", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CameraTarget", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Camera:CameraYPR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "yaw", TechnicalName = "yaw", Description = "Input camera yaw.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "pitch", TechnicalName = "pitch", Description = "Input camera pitch.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Input camera roll.", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Current camera yaw.", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "dir", TechnicalName = "dir", Description = "Current camera pitch.", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Current camera roll.", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Weapon:ChangeAmmo", "Give or Take ammo to/from local player. Weapon and AmmoType must match [e.g. \"SOCOM\" and \"bullet\"]");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to give/take ammo and clips", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "Weapon name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AmmoType", TechnicalName = "AmmoType", Description = "Ammo name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AmmoCount", TechnicalName = "AmmoCount", Description = "Ammo amount to give/take", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "AI:ChangeParameter", "Changes an AI's parameters dynamically");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Change the parameter of the AI", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Parameter", TechnicalName = "Param", Description = "Parameter to change", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Value", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:CharAttachmentMaterialParam", "[CUTSCENE ONLY] Set ShaderParams of Character Attachments.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CharSlot", TechnicalName = "CharSlot", Description = "Character Slot within Entity", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Attachment", TechnicalName = "Attachment", Description = "Attachment", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "SetMaterial", TechnicalName = "SetMaterial", Description = "Trigger to force setting a material [ForcedMaterial]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ForcedMaterial", TechnicalName = "ForcedMaterial", Description = "Material", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "SubMtlId", TechnicalName = "SubMtlId", Description = "Sub Material Id", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to get current value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamFloat", TechnicalName = "ParamFloat", Description = "Float Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Trigger to set Float value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamColor", TechnicalName = "ParamColor", Description = "Color Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "color_ValueColor", TechnicalName = "color_ValueColor", Description = "Trigger to set Color value", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Current Float Value", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ValueColor", TechnicalName = "ValueColor", Description = "Current Color Value", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CharacterAttachHelper", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Weapon:CheckAccessory", "Checks if target actor's current weapon has [Accessory] attached.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Check", TechnicalName = "Check", Description = "Trigger this port to check for accessory on the Actor's current weapon", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Accessory", TechnicalName = "Accessory", Description = "Name of accessory to check for.", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if accessory is not attached.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if accessory is attached.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Mission:CheckGameToken", "Check if the value of a game token equals to a value");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this input to actually get the game token value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Token", TechnicalName = "gametoken_Token", Description = "Game token to set", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "CheckValue", TechnicalName = "CheckValue", Description = "Value to compare the token with", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OutValue", TechnicalName = "OutValue", Description = "Value of the token", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Result", TechnicalName = "Result", Description = "TRUE if equals, FALSE otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if equal", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if not equal", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Weapon:CheckZoom", "Checks if target actor's current weapon is zoomed.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Check", TechnicalName = "Check", Description = "Trigger this port to check if Actor's current weapon is zoomed", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "Name of Weapon to check. Empty=All.", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if weapon is not zoomed.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if weapon is zoomed.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Chickens", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:ChromaShift", "Sets chroma shift filter");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "FilterChromaShift_User_Amount", Description = "Amount of chroma shift", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CinematicTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Invisible", TechnicalName = "Invisible", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Visible", TechnicalName = "Visible", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Invisible", TechnicalName = "Invisible", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Visible", TechnicalName = "Visible", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Civ car1", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Civ speedboat", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Civilian", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WakeUp", TechnicalName = "WakeUp", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnAlert", TechnicalName = "OnAlert", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Sleep", TechnicalName = "Sleep", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Clamp", "");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "min", TechnicalName = "min", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "max", TechnicalName = "max", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:ClampVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "min", TechnicalName = "min", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "max", TechnicalName = "max", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Claymore", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CloneFactory", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Clone", TechnicalName = "Clone", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CloneDied", TechnicalName = "CloneDied", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Cloth", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WindOff", TechnicalName = "WindOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WindOn", TechnicalName = "WindOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "WindOff", TechnicalName = "WindOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WindOn", TechnicalName = "WindOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Cloud", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AnimatedCharacter:ColliderMode", "ColliderMode Node");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to request collider mode in animated character.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ColliderMode", TechnicalName = "ColliderMode", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when Done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Interpol:Color", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "StartInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "StopInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "color_StartValue", TechnicalName = "color_StartValue", Description = "Start value", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "color_EndValue", TechnicalName = "color_EndValue", Description = "End value", Type = EFlowNodeItemType.Vector, Value = "1,1,1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Time in Seconds", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current Value", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:ColorCorrection", "Sets color correction parameters");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Cyan", TechnicalName = "Global_User_ColorC", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Magenta", TechnicalName = "Global_User_ColorM", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Yellow", TechnicalName = "Global_User_ColorY", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Luminance", TechnicalName = "Global_User_ColorK", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Brightness", TechnicalName = "Global_User_Brightness", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Contrast", TechnicalName = "Global_User_Contrast", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Saturation", TechnicalName = "Global_User_Saturation", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hue", TechnicalName = "Global_User_ColorHue", Description = "Change Hue", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Comment", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "String:Compare", "Compare two strings");

            node.Inputs.Add(new FlowNodeItem { Name = "Compare", TechnicalName = "Compare", Description = "Trigger to compare strings [A] and [B]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "String A to compare", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "String B to compare", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "IgnoreCase", TechnicalName = "IgnoreCase", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Result", TechnicalName = "Result", Description = "Outputs -1 if A < B, 0 if A == B, 1 if A > B", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if A != B", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if A == B", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Environment:ComputeLighting", "Compute the amount of light at a given point");

            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "Position to compute lighting at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "Radius around the position", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Accuracy", TechnicalName = "Accuracy", Description = "TRUE for accurate, FALSE for fast", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Light", TechnicalName = "Light", Description = "Light output", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Misc:Condition", "LEGACY! Node to route data flow based on a boolean condition. Both inputs trigger the output. Legacy. Use Logic:Condition instead!");

            node.Inputs.Add(new FlowNodeItem { Name = "condition", TechnicalName = "condition", Description = "Setting this input to TRUE sends the value [value] to the [true] port, otherwise to [false]", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "value", TechnicalName = "value", Description = "Value to direct to a true or false port", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "Activated when the condition is true (passes the value through)", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "Activated when the condition is false (passes the value through)", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:Condition", "Node to route data flow based on a boolean condition. Setting input [Value] will route it either to [OnFalse] or [OnTrue].");

            node.Inputs.Add(new FlowNodeItem { Name = "Condition", TechnicalName = "Condition", Description = "If condition is FALSE input [In] will be routed to [OnFalse], otherwise to [OnTrue]", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Value to route to [OnFalse] or [OnTrue], based on [Condition]", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "OnFalse", TechnicalName = "OnFalse", Description = "Set to input [In] if [Condition] is FALSE)", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnTrue", TechnicalName = "OnTrue", Description = "Set to input [In] if [Condition] is TRUE", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "System:ConsoleVariable", "Sets/Gets the value of a console variable (CVar).");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Trigger to Set CVar's value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to Get CVar's value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "CVar", TechnicalName = "CVar", Description = "Name of the CVar to set/get [case-INsensitive]", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Value of the CVar to set", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "CurValue", TechnicalName = "CurValue", Description = "Current Value of the CVar [Triggered on Set/Get]", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Constraint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ConstraintBroken", TechnicalName = "ConstraintBroken", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ConstraintBroken", TechnicalName = "ConstraintBroken", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Harvester:Controller", "Main Harvester control point. Drop to create a harvester for a given team.");

            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Owning team", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Create At", TechnicalName = "CreateAt", Description = "Where to create the Harvester at if not going through factory", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Create Dir", TechnicalName = "CreateFace", Description = "Direction (degrees) Harvester should face if not created through factory", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UseFactory", TechnicalName = "UseFactory", Description = "TRUE Create Harvester through the Vechicle Factory, FALSE to use CreateAt point", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "FactoryName", TechnicalName = "FactoryName", Description = "Name of factory to use i.e. \"VehicleFactory\"", Type = EFlowNodeItemType.String, Value = "VehicleFactory" });

            node.Outputs.Add(new FlowNodeItem { Name = "Purchased", TechnicalName = "Purchased", Description = "Triggered when the harvester is (re)purchased", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ToField", TechnicalName = "ToField", Description = "Triggered when the harvester is to begin its route to the Tiberium Field", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "FromField", TechnicalName = "FromField", Description = "Triggered when the harvester is to begin its route back from the Tiberium Field", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Loading", TechnicalName = "Loading", Description = "Triggered when the harvester is starting to load up", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Loaded", TechnicalName = "Loaded", Description = "Triggered when the harvester has loaded", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Unloading", TechnicalName = "Unloading", Description = "Triggered when the harvester is starting to unload", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Unloaded", TechnicalName = "Unloaded", Description = "Triggered when the harvester has unloaded", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Trigonomtry:Cosinus", "Outputs cosinus of the input in degrees");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "out=cosinus(in) in degrees", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=cosinus(in) in degrees", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Counter", "When [in] port is triggered, internal counter is increased and sent to [out], when count reaches [max] counter is set to 0");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "reset", TechnicalName = "reset", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "max", TechnicalName = "max", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "count", TechnicalName = "count", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Crabs", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "D6Player:CreditBank", "Access or control a D6 player's credits");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Get Credits", TechnicalName = "GetCredits", Description = "Just get the amount of credits", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Set Credits", TechnicalName = "SetCredits", Description = "Set the credits to the amount specified", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Give Credits", TechnicalName = "GiveCredits", Description = "Give (+) amount of credits specified", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Take Credits", TechnicalName = "TakeCredits", Description = "Take (-) amount of credits specified", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "Amount", Description = "Amount of credits", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Credits", TechnicalName = "Credits", Description = "Resulting amount of credits based on action", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "D6Player:CreditRange", "Determines if player's credits are in given range");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Run the test", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Minimum Amount", TechnicalName = "MinAmount", Description = "Minimum amount to check for", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Maximum Amount", TechnicalName = "MaxAmount", Description = "Maximum amount to check for", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Passed", TechnicalName = "Passed", Description = "Triggered if test passes (in range)", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Failed", TechnicalName = "Failed", Description = "Triggered if test fails (not in range)", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:CrossVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=A^B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out=A^B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=A^B", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CustomAmmoPickup", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CustomAmmoPickupLarge", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CustomAmmoPickupMedium", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:CustomAmmoPickupSmall", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DSG1", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:DamageActor", "Damages attached entity by [Damage] when [Trigger] is activated");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to actually damage the actor", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Damage", TechnicalName = "damage", Description = "Amount of damage to exert when [Trigger] is activated", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "Position of damage", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "BuildingController:DamageListener", "Used to listen for damage-specific events from a Building Controller");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Turn listening on/off", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Team name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Class name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hits", TechnicalName = "Hits", Description = "TRUE to listen for weapon hits (non-explosions)", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Explosions", TechnicalName = "Explosions", Description = "TRUE to listen for explosions", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "When connected, limit HitInfo to this shooter", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "When connected, limit HitInfo to this target", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "When set, limit HitInfo to this weapon", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "When set, limit HitInfo to this ammo", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OnDamage", TechnicalName = "OnDamage", Description = "Triggered when damage has occured", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "EntityID of the Shooter", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "EntityID of the Target", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WeaponId", TechnicalName = "WeaponId", Description = "EntityID of the Weapon", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ProjectileId", TechnicalName = "ProjectileId", Description = "EntityID of the Projectile if it was a bullet hit", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitPos", TechnicalName = "HitPos", Description = "Position of the Hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitDir", TechnicalName = "HitDir", Description = "Direction of the Hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitNormal", TechnicalName = "HitNormal", Description = "Normal of the Hit Impact", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitType", TechnicalName = "HitType", Description = "Name of the HitType", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Damage", TechnicalName = "Damage", Description = "Damage amout which was caused", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Material", TechnicalName = "Material", Description = "Name of the Material", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:DeMultiplexer", "Pushes the input to the selected (via Index) output port. 3 different modes: InputOnly: Only [Input] triggers output. IndexOnly: Only [Index] triggers output. Both: Both [Input] and [Index] trigger output.");

            node.Inputs.Add(new FlowNodeItem { Name = "Index", TechnicalName = "Index", Description = "Select Output port index from 0 to 7", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Mode", TechnicalName = "Mode", Description = "InputOnly: Only [Input] triggers output. IndexOnly: Only [Index] triggers output. Both: Both [Input] and [Index] trigger output.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input", TechnicalName = "Input", Description = "Input port", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Port0", TechnicalName = "Port0", Description = "Output Port 0", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port1", TechnicalName = "Port1", Description = "Output Port 1", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port2", TechnicalName = "Port2", Description = "Output Port 2", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port3", TechnicalName = "Port3", Description = "Output Port 3", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port4", TechnicalName = "Port4", Description = "Output Port 4", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port5", TechnicalName = "Port5", Description = "Output Port 5", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port6", TechnicalName = "Port6", Description = "Output Port 6", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Port7", TechnicalName = "Port7", Description = "Output Port 7", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DeadBody", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Awake", TechnicalName = "Awake", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Awake", TechnicalName = "Awake", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:DebugAISpeed", "This node should be used only for debugging! Sets the speed urgency (pseudospeed) in the same range as AI would request it from game.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "speed", TechnicalName = "speed", Description = "0.0 - stop 0.1 - very slow (AI lower limit) 0.2 - slow 0.4 - walk 1.0 - run 1.3 - sprint 1.6 - AI upper limit", Type = EFlowNodeItemType.Float, Value = 0.40000001 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DebugGun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DecalPlacer", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SpawnDecal", TechnicalName = "SpawnDecal", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "SpawnDecal", TechnicalName = "SpawnDecal", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Default", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DefaultVehicle", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:Delay", "This node will delay passing the signal from [In] to [Out] for the specified number of seconds in [Delay]");

            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "in", Description = "Value to be passed after [Delay] time", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Delay", TechnicalName = "delay", Description = "Delay time in seconds", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "Out", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DelayTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "InputTrigger", TechnicalName = "InputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OutputTrigger", TechnicalName = "OutputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "InputTrigger", TechnicalName = "InputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OutputTrigger", TechnicalName = "OutputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:DepthOfField", "Depth of field effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableDof", TechnicalName = "Dof_User_Active", Description = "Enables dof effect", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "FocusDistance", TechnicalName = "Dof_User_FocusDistance", Description = "Set focus distance", Type = EFlowNodeItemType.Float, Value = 3.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "FocusRange", TechnicalName = "Dof_User_FocusRange", Description = "Set focus range", Type = EFlowNodeItemType.Float, Value = 5 });
            node.Inputs.Add(new FlowNodeItem { Name = "BlurAmount", TechnicalName = "Dof_User_BlurAmount", Description = "Set blurring amount", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DestroyableObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Explode", TechnicalName = "Explode", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Explode", TechnicalName = "Explode", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DetachThis", "Detach child from its parent");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Detach", TechnicalName = "Detach", Description = "Trigger to detach entity from parent", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "KeepTransform", TechnicalName = "KeepTransform", Description = "When attaching entity will stay in same transformation in world space", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnablePhysics", TechnicalName = "EnablePhysics", Description = "Force enable physics of entity after detaching", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Detonator", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Sound:Dialog", "Play a DialogSound on an entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "sound_SoundName", Description = "Name of Dialog Sound to play", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "PlayTrigger", Description = "Play", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "StopTrigger", Description = "Stop", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered if SoundEvent has stopped playing", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsPlaying", TechnicalName = "IsPlaying", Description = "True if SoundEvent is playing (triggered on changed)", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Dialog", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Once", TechnicalName = "Once", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Game:DifficultyLevel", "Get difficulty level.");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to get difficulty level.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Easy", TechnicalName = "Easy", Description = "Easy", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Normal", TechnicalName = "Normal", Description = "Normal", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hard", TechnicalName = "Hard", Description = "Hard", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Delta", TechnicalName = "Delta", Description = "Delta", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:DirToAngles", "");

            node.Inputs.Add(new FlowNodeItem { Name = "dir", TechnicalName = "dir", Description = "Input direction.", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "roll", TechnicalName = "roll", Description = "Input roll.", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "angles", TechnicalName = "angles", Description = "Output angles.", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:DirectionalBlur", "Directional Blur effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Direction", TechnicalName = "Global_DirectionalBlur_Vec", Description = "Sets directional blur direction", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "HUD:DisplayDebugMessage", "");

            node.Inputs.Add(new FlowNodeItem { Name = "message", TechnicalName = "message", Description = "Display this message on the hud", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "posX", TechnicalName = "posX", Description = "Input x text position", Type = EFlowNodeItemType.Float, Value = 50 });
            node.Inputs.Add(new FlowNodeItem { Name = "posY", TechnicalName = "posY", Description = "Input y text position", Type = EFlowNodeItemType.Float, Value = 50 });
            node.Inputs.Add(new FlowNodeItem { Name = "fontSize", TechnicalName = "fontSize", Description = "Input font size", Type = EFlowNodeItemType.Float, Value = 2 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "HUD:DisplayInfoMessage", "");

            node.Inputs.Add(new FlowNodeItem { Name = "display", TechnicalName = "display", Description = "Connect event here to display the message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "message", TechnicalName = "message", Description = "Display this message on the hud", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "displayTime", TechnicalName = "displayTime", Description = "How long to display message", Type = EFlowNodeItemType.Float, Value = 10 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "HUD:DisplayInstructionMessage", "");

            node.Inputs.Add(new FlowNodeItem { Name = "display", TechnicalName = "display", Description = "Connect event here to display the message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "text_message", TechnicalName = "text_message", Description = "Display this message on the hud", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "displayTime", TechnicalName = "displayTime", Description = "How long to display message", Type = EFlowNodeItemType.Float, Value = 10 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "HUD:DisplayPDAMessage", "");

            node.Inputs.Add(new FlowNodeItem { Name = "display", TechnicalName = "display", Description = "Connect event here to display the objective", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "objective", TechnicalName = "objective", Description = "This is the key, text or mission objective identifier.", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "MessageType", TechnicalName = "MessageType", Description = "Here the message type can be selected: <[empty]> for mission objective, <demo> for demo-mode message, <text> for plain text message", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "HUD:DisplayTimedDebugMessage", "Display a debug [Message] for [DisplayTime] seconds");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to display message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Message", TechnicalName = "Message", Description = "Message to display", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "DisplayTime", TechnicalName = "DisplayTime", Description = "How long to display in seconds (<=0.0 means forever)", Type = EFlowNodeItemType.Float, Value = 2 });
            node.Inputs.Add(new FlowNodeItem { Name = "PosX", TechnicalName = "PosX", Description = "X Position of text", Type = EFlowNodeItemType.Float, Value = 50 });
            node.Inputs.Add(new FlowNodeItem { Name = "PosY", TechnicalName = "PosY", Description = "Y Position of text", Type = EFlowNodeItemType.Float, Value = 50 });
            node.Inputs.Add(new FlowNodeItem { Name = "FontSize", TechnicalName = "FontSize", Description = "Input font size", Type = EFlowNodeItemType.Float, Value = 2 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:DistantRain", "Distant rain effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "DistantRain_Amount", Description = "Amount of visible distant rain", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "DistantRain_Speed", Description = "Distant rain speed multiplier", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "DistanceScale", TechnicalName = "DistantRain_DistanceScale", Description = "Distant rain distance scale", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Color", TechnicalName = "clr_DistantRain_Color", Description = "Sets distance rain color", Type = EFlowNodeItemType.Vector, Value = "1,1,1" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Div", "[out] = [A] / [B]");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Door", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnLock", TechnicalName = "UnLock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Lock", TechnicalName = "Lock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnLock", TechnicalName = "UnLock", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:DotVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=A.B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out=A.B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=A.B", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:DualSOCOM", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Physics:Dynamics", "Dynamic physical state of an entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "v", TechnicalName = "v", Description = "Velocity of entity", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "a", TechnicalName = "a", Description = "Acceleration of entity", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "w", TechnicalName = "w", Description = "Angular velocity of entity", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "wa", TechnicalName = "wa", Description = "Angular acceleration of entity", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:EMPGrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:EditorGameStart", "Used to detect when the game in the editor has started");


            node.Outputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Triggered when editor game starts", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:EffectBloodSplats", "Blood splats effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "BloodSplats_Type", Description = "Blood type: human or alien", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "BloodSplats_Amount", Description = "Amount of visible blood", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "BloodSplats_Spawn", Description = "Spawn more blood particles", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:EffectCondensation", "Condensation effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "ScreenCondensation_Amount", Description = "Amount of condensation ", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CenterAmount", TechnicalName = "ScreenCondensation_CenterAmount", Description = "Amount of condensation at center of screen", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:EffectFrost", "Freezing effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "ScreenFrost_Amount", Description = "Amount of frost", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CenterAmount", TechnicalName = "ScreenFrost_CenterAmount", Description = "Amount of frost at center of screen", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:EffectWaterDroplets", "Water droplets effect - Use when camera goes out of water or similar extreme condition");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "WaterDroplets_Amount", Description = "Amount of water", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:EffectWaterFlow", "Water flow effect - Use when camera receiving splashes of water or similar");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "WaterFlow_Amount", Description = "Amount of water", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Elevator", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ElevatorSwitch", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Mission:EndLevelNew", "Advance to a new level");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Finish the current mission (go to next level)", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "NextLevel", TechnicalName = "NextLevel", Description = "Which level is the next level?", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:Enter", "Makes AI or player enter specified seat of specified vehicle. ");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "VehicleId", TechnicalName = "VehicleId", Description = "vehicle to be entered", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Seat", TechnicalName = "SeatNumber", Description = "seat to be entered", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Fast", TechnicalName = "Fast", Description = "skip approaching and playing entering animation", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:EntitiesInRange", "Check if two entities are in range, activated by Trigger");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to check if entities are in range", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Entity1", TechnicalName = "Entity1", Description = "Entity 1", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Entity2", TechnicalName = "Entity2", Description = "Entity 2", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Range", TechnicalName = "Range", Description = "Range to check", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "InRange", TechnicalName = "InRange", Description = "True if Entities are in Range", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if Entities are not in Range", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if Entities are in Range", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Vehicle:EntityAttachment", "Handle the entity attachment used as vehicle action");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DropAttachmentTrigger", TechnicalName = "DropAttachmentTrigger", Description = "Trigger to drop the attachment", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "EntityId", TechnicalName = "EntityId", Description = "Entity Id of the attachment", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsAttached", TechnicalName = "IsAttached", Description = "If the attachment is still attached", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:EntityId", "Entity ID");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Id", TechnicalName = "Id", Description = "Entity ID", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:EntityInfo", "Get Entity Information");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to get info", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Id", TechnicalName = "Id", Description = "Entity Id", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Name", TechnicalName = "Name", Description = "Entity Name", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Entity Class", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Archetype", TechnicalName = "Archetype", Description = "Entity Archetype", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Game:EntityInterest", "Registers an entity with the interest system");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "registerInteresting", TechnicalName = "registerInteresting", Description = "Register entity as interesting", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "registerUser", TechnicalName = "registerUser", Description = "Register an actor to use the system", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "interestLevel", TechnicalName = "interestLevel", Description = "Base interest level of object or minimum interest level of actor", Type = EFlowNodeItemType.Float, Value = 5 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:EntityPos", "Entity Position/Rotation/Scale");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Entity position vector", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "rotate", TechnicalName = "rotate", Description = "Entity rotation angle in degrees", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "scale", TechnicalName = "scale", Description = "Entity scale vector", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Entity position vector", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "rotate", TechnicalName = "rotate", Description = "Entity rotation angle in degrees", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "scale", TechnicalName = "scale", Description = "Entity scale vector", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fwdDir", TechnicalName = "fwdDir", Description = "Entity direction vector - Y axis", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "rightDir", TechnicalName = "rightDir", Description = "Entity direction vector - X axis", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "upDir", TechnicalName = "upDir", Description = "Entity direction vector - Z axis", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Equal", "[out] is true when [A]==[B], false otherwise");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "triggered if out is true", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "triggered if out is false", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:EqualVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out triggered when A==B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out triggered when A==B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "AI:EventListener", "The highest level of alertness of any agent in the level");

            node.Inputs.Add(new FlowNodeItem { Name = "Pos", TechnicalName = "Pos", Description = "Position of the listener", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "Radius of the listener", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ThresholdSound", TechnicalName = "ThresholdSound", Description = "Sensitivity of the sound output", Type = EFlowNodeItemType.Float, Value = 0.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "ThresholdCollision", TechnicalName = "ThresholdCollision", Description = "Sensitivity of the collision output", Type = EFlowNodeItemType.Float, Value = 0.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "ThresholdBullet", TechnicalName = "ThresholdBullet", Description = "Sensitivity of the bullet output", Type = EFlowNodeItemType.Float, Value = 0.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "ThresholdExplosion", TechnicalName = "ThresholdExplosion", Description = "Sensitivity of the explosion output", Type = EFlowNodeItemType.Float, Value = 0.5 });

            node.Outputs.Add(new FlowNodeItem { Name = "Sound", TechnicalName = "Sound", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Collision", TechnicalName = "Collision", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Bullet", TechnicalName = "Bullet", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Explosion", TechnicalName = "Explosion", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:Exit", "makes ai exit a vehicle");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Synk", TechnicalName = "Synk", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Exocet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Explosion", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Explode", TechnicalName = "Explode", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Explode", TechnicalName = "Explode", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Crysis:ExplosionInfo", "Tracks Explosions. All input conditions (ShooterId, Ammo, ImpactTargetId) must be fulfilled to output. If a condition is left empty/not connected, it is regarded as fulfilled.");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable/Disable ExplosionInfo", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "When connected, limit ExplosionInfo to this shooter", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "!DONT USE! -> Use Ammo!", TechnicalName = "Weapon", Description = "!DONT USE! -> Use Ammo!", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "When set, limit ExplosionInfo to this ammo", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ImpactTargetId", TechnicalName = "ImpactTargetId", Description = "When connected, limit ExplosionInfo to this Impact target (e.g. for Rockets)", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "EntityID of the Shooter", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "Ammo Class", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Pos", TechnicalName = "Pos", Description = "Position of the Explosion", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Dir", TechnicalName = "Dir", Description = "Direction of the Explosion", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "Radius of Explosion", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Damage", TechnicalName = "Damage", Description = "Damage amout which was caused", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Pressure", TechnicalName = "Pressure", Description = "Pressure amout which was caused", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HoleSize", TechnicalName = "HoleSize", Description = "Hole size which was caused", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "Type", Description = "Name of the Explosion type", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ImpactTargetId", TechnicalName = "ImpactTargetId", Description = "EntityID of the Impact Target (e.g. for Rockets)", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ImpactNormal", TechnicalName = "ImpactNormal", Description = "Impact Normal (e.g. for Rockets)", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ImpactVelocity", TechnicalName = "ImpactVelocity", Description = "Impact Normal (e.g. for Rockets)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ExplosiveObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StartTimer", TechnicalName = "StartTimer", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StopTimer", TechnicalName = "StopTimer", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StartTimer", TechnicalName = "StartTimer", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StopTimer", TechnicalName = "StopTimer", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Multiplayer:GetTeam", "GetTeam MPNode");


            node.Outputs.Add(new FlowNodeItem { Name = "TeamName", TechnicalName = "TeamName", Description = "Outputs team name of player", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsNK", TechnicalName = "IsNK", Description = "Outputs when player is in NK team", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsUS", TechnicalName = "IsUS", Description = "Outputs when player is in US team", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FY71", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FY71IncendiaryAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FY71NormalAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Factory", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "NanoSuit:FakeMaterial", "Fake Materials on Characters (non Player/AI) NanoSuit for Cinematics");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Asian", TechnicalName = "Asian", Description = "If true, use Asian material, otherwise US", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "Trigger to select Cloak Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Strength", TechnicalName = "Strength", Description = "Trigger to select Strength Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Defense", TechnicalName = "Defense", Description = "Trigger to select Defense Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Trigger to select Speed Mode", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when Done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Fan", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Switch", TechnicalName = "Switch", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnOff", TechnicalName = "TurnOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnOn", TechnicalName = "TurnOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnOff", TechnicalName = "TurnOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnOn", TechnicalName = "TurnOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FastLightMOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FastLightMOAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:FilterBlur", "Sets blur filter");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "FilterBlurring_Type", Description = "Set blur type, 0 is Gaussian", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "FilterBlurring_Amount", Description = "Amount of blurring", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:FilterGrain", "Sets grain filter");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "FilterGrain_Amount", Description = "Amount of grain", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:FilterRadialBlur", "Sets radial blur filter");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "FilterRadialBlurring_Amount", Description = "Amount of blurring", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ScreenPosX", TechnicalName = "FilterRadialBlurring_ScreenPosX", Description = "Horizontal screen position", Type = EFlowNodeItemType.Float, Value = 0.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "ScreenPosY", TechnicalName = "FilterRadialBlurring_ScreenPosY", Description = "Vertical screen position", Type = EFlowNodeItemType.Float, Value = 0.5 });
            node.Inputs.Add(new FlowNodeItem { Name = "BlurringRadius", TechnicalName = "FilterRadialBlurring_Radius", Description = "Blurring radius", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:FilterSharpen", "Sets sharpen filter");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "FilterSharpening_Type", Description = "Sets sharpening filter, 0 is Unsharp Mask", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "FilterSharpening_Amount", Description = "Amount of sharpening", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Weapon:FireWeapon", "Fires a weapon and sets a target entity or a target position.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "Sets Weapon ammo", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "Target entity", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetPos", TechnicalName = "TargetPos", Description = "Alternatively, Target position", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "AlignToTarget", TechnicalName = "AlignToTarget", Description = "If true, weapon entity will be aligned to target direction. Using this can have side effects. Do not use on self-aligning weapons.", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AutoReload", TechnicalName = "AutoReload", Description = "Auto-reload", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StartFire", TechnicalName = "StartFire", Description = "Trigger this to start fire.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StopFire", TechnicalName = "StopFire", Description = "Trigger this to stop fire.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "FireStarted", TechnicalName = "FireStarted", Description = "True if StartFire command was successful", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Fish", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Fists", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Flag", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Flash", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Strike", TechnicalName = "Strike", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Strike", TechnicalName = "Strike", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:FlashInvoke", "Invoke Flash Function");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Slot", TechnicalName = "Slot", Description = "Material Slot", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SubMtlId", TechnicalName = "SubMtlId", Description = "Sub Material Id", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TexSlot", TechnicalName = "TexSlot", Description = "Texture Slot", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Invoke", TechnicalName = "Invoke", Description = "Trigger to invoked [Method]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Method", TechnicalName = "Method", Description = "Method to be invoked", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Param1", TechnicalName = "Param1", Description = "Param 1", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Param2", TechnicalName = "Param2", Description = "Param 2", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Param3", TechnicalName = "Param3", Description = "Param 3", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Param4", TechnicalName = "Param4", Description = "Param 4", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Result", TechnicalName = "Result", Description = "Result when successfully called", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FlashbangAI", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FlashbangGrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Interpol:Float", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "StartInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "StopInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StartValue", TechnicalName = "StartValue", Description = "Start value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EndValue", TechnicalName = "EndValue", Description = "End value", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Time in Seconds", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current Value", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Fog", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FogVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "x_Time", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "y_Value", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Fade", TechnicalName = "z_Fade", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ForbiddenArea", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:FragGrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Stats:Frame", "");


            node.Outputs.Add(new FlowNodeItem { Name = "frametime", TechnicalName = "frametime", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "framerate", TechnicalName = "framerate", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "frameid", TechnicalName = "frameid", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Crysis:FreezeEntity", "Freezes/Unfreezes attached entity/actor.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Freeze", TechnicalName = "Freeze", Description = "Trigger to freeze entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "UnFreeze", TechnicalName = "UnFreeze", Description = "Trigger to un-freeze entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "UseVapor", TechnicalName = "UseVapor", Description = "Trigger to un-freeze entity", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Frozen", TechnicalName = "Frozen", Description = "Triggered on Freeze", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnFrozen", TechnicalName = "UnFrozen", Description = "Triggered on UnFreeze", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Frogs", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:FromBoolean", "Boolean switch");

            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Boolean value", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if Boolean was False", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if Boolean was True", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:FromVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "vec3", TechnicalName = "vec3", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "x", TechnicalName = "x", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "y", TechnicalName = "y", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "z", TechnicalName = "z", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GUI", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Game:GameObjectEvent", "Broadcast a game object event or send to a specific entity. EventParam is an event specific string");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to send the event", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EventName", TechnicalName = "EventName", Description = "Name of event to send", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EventParam", TechnicalName = "EventParam", Description = "Parameter of the event [event-specific]", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Mission:GameToken", "GameToken set/get");

            node.Inputs.Add(new FlowNodeItem { Name = "Input", TechnicalName = "In", Description = "Feed this port to set the game token value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Token", TechnicalName = "gametoken_Token", Description = "GameToken to set/get", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Output", TechnicalName = "Out", Description = "Outputs the token's value on every change", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Multiplayer:GameType", "MP GameTypeNode");

            node.Inputs.Add(new FlowNodeItem { Name = "GetGameType", TechnicalName = "GetGameType", Description = "Activate this to retrigger relevent outputs", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "InstantAction", TechnicalName = "InstantAction", Description = "Triggered on level load if InstantAction game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TeamAction", TechnicalName = "TeamAction", Description = "Triggered on level load if TeamAction game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "PowerStruggle", TechnicalName = "PowerStruggle", Description = "Triggered on level load if PowerStruggle game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "GameRulesName", TechnicalName = "GameRulesName", Description = "Outputs the current game rules name", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Logic:Gate", "Gate - If closed blocks [In] signals, otherwise passes them to [Out]");

            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Input", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Closed", TechnicalName = "Closed", Description = "If true blocks [In] data. Otherwise passes [In] to [Out]", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "Sets [Closed] to false.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "Sets [Closed] to true.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "Output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GaussAAA", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GaussCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GaussRifle", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "BuildingController:GeneralListener", "Used to listen for general events from a Building Controller");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Turn listening on/off", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Team name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Class name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Validated", TechnicalName = "Validated", Description = "Triggered when controller has been validated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Triggered when controller has been reset", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Power Changed", TechnicalName = "PowerChanged", Description = "Triggered when controller's power status changed. Sends TRUE if power is online, FALSE if offline.", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "Triggered when controller is destroyed", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GeomEntity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Mission:GetGameToken", "Get the value of a game token");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this input to actually get the game token value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Token", TechnicalName = "gametoken_Token", Description = "Game token to set", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OutValue", TechnicalName = "OutValue", Description = "Value of the game token", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Entity:GetPlayer", "Retrieve current player entity - Deprecated Use Game:LocalPlayer!");


            node.Outputs.Add(new FlowNodeItem { Name = "Player", TechnicalName = "Player", Description = "Outputs Id of the current player", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GetPos", "Get Entity Position/Rotation/Scale");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to get current values", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Pos", TechnicalName = "Pos", Description = "Entity position vector", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Rotate", TechnicalName = "Rotate", Description = "Entity rotation angle in degrees", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Scale", TechnicalName = "Scale", Description = "Entity scale vector", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "FwdDir", TechnicalName = "FwdDir", Description = "Entity direction vector - Y axis", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "RightDir", TechnicalName = "RightDir", Description = "Entity direction vector - X axis", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UpDir", TechnicalName = "UpDir", Description = "Entity direction vector - Z axis", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GetProperty", "Retrieve entity property value");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "activate", TechnicalName = "activate", Description = "Trigger it to get the property!", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "Property Name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "value", TechnicalName = "value", Description = "Value of the property", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Golfclub", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Harvester:Goto", "Use to move a harvester to a new location.");

            node.Inputs.Add(new FlowNodeItem { Name = "Move", TechnicalName = "Move", Description = "Move to the specified location", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Goto Position", TechnicalName = "GotoPos", Description = "Where to move to. Note: 'Z' is ignored", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Top Speed", TechnicalName = "MaxSpeed", Description = "How fast the harvester can move (max)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Low Speed", TechnicalName = "MinSpeed", Description = "How fast the harvester can move (min)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Slow Distance", TechnicalName = "SlowDist", Description = "How far away before harvester should start to slow down", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Break Past", TechnicalName = "BreakPast", Description = "Set to signal harvester to break once it passes the location", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reverse", TechnicalName = "Reverse", Description = "Set to force harvester to drive in reverse", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lock Steering", TechnicalName = "LockSteering", Description = "Set to prevent harvester from steering while moving", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TimeOut", TechnicalName = "TimeOut", Description = "Set how long the harvester may attempt to move before timing out", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when harvester is at or passes the location", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Triggered when harvester begins to move to the location", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Timed Out", TechnicalName = "TimedOut", Description = "Triggered when harvester times out and did not make it to the location", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GravityBox", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GravitySphere", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GravityStream", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GravityStreamCap", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GravityValve", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GrenadeLauncher", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:GrenadeShell", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Grunt", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WakeUp", TechnicalName = "WakeUp", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnAlert", TechnicalName = "OnAlert", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Sleep", TechnicalName = "Sleep", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:HQ", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:HUDControl", "Trigger some HUD-specific visual effects.");

            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Trigger this port to show the HUD", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Trigger this port to hide the HID", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "BootSeq", TechnicalName = "BootSeq", Description = "Trigger this port to show the Boot Sequence", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "BreakSeq", TechnicalName = "BreakSeq", Description = "Trigger this port to show the Break Sequence", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "RebootSeq", TechnicalName = "RebootSeq", Description = "Trigger this port to show the Reboot Sequence", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AlienInterference", TechnicalName = "AlienInterference", Description = "Trigger with boolean to enable/disable Alien interference effect", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AlienInterferenceStrength", TechnicalName = "AlienInterferenceStrength", Description = "Strength of Alien interference effect", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "MapNotAvailable", TechnicalName = "MapNotAvailable", Description = "Trigger with boolean to enable/disable an animation when Minimap does not exist", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:HUDDataUpload", "HUD Upload Effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Trigger to activate HUD Upload", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "Trigger to deactivate HUD Upload", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "Triggered when activated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "Triggered when deactivated", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "MaterialFX:HUDEndFX", "MaterialFX EndNode");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to mark end of effect.", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "MaterialFX:HUDStartFX", "MaterialFX StartNode");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Triggered automatically by MaterialEffects", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Started", TechnicalName = "Started", Description = "Triggered when Effect is started.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Distance", TechnicalName = "Distance", Description = "Distance to player", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Param1", TechnicalName = "Param1", Description = "Custom Param 1", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Param2", TechnicalName = "Param2", Description = "Custom Param 2", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Param3", TechnicalName = "Param3", Description = "Custom Param 3", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Param4", TechnicalName = "Param4", Description = "Custom Param 4", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Harvester", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Inventory:HasAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Check", TechnicalName = "check", Description = "Connect event here to check the inventory for the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AmmoType", TechnicalName = "AmmoType", Description = "Select from which ammo to choose", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "out", Description = "True if the player has the ammo, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if player does not have the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if player has the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Ammo count", TechnicalName = "Ammo count", Description = "Outputs the current ammo count", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:HasItem", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Check", TechnicalName = "check", Description = "Connect event here to check the inventory for the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Item", TechnicalName = "item", Description = "The item to add to the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ItemType", TechnicalName = "ItemType", Description = "Select from which items to choose", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "out", Description = "True if the player has the item, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "False", TechnicalName = "False", Description = "Triggered if player does not have the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "True", TechnicalName = "True", Description = "Triggered if player has the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemId", TechnicalName = "ItemId", Description = "Outputs the item's entity id", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "BuildingController:HasPower", "Used to check the power status of a building");

            node.Inputs.Add(new FlowNodeItem { Name = "Check", TechnicalName = "Check", Description = "Check the power status", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Team name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Class name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Status", TechnicalName = "Status", Description = "Triggered when check occurs. Returns TRUE if controller has power, FALSE if it doesn't.", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Power", TechnicalName = "Power", Description = "Triggered if controller has power", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Power", TechnicalName = "Power", Description = "Triggered if controller does not have power", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Hazard", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enter", TechnicalName = "Enter", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Leave", TechnicalName = "Leave", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:HeavyMOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Hellfire", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Crysis:HitInfo", "Tracks Hits on Actors. All input conditions (ShooterId, TargetId, Weapon, Ammo) must be fulfilled to output. If a condition is left empty/not connected, it is regarded as fulfilled.");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable/Disable HitInfo", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "When connected, limit HitInfo to this shooter", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "When connected, limit HitInfo to this target", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Weapon", TechnicalName = "Weapon", Description = "When set, limit HitInfo to this weapon", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "When set, limit HitInfo to this ammo", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "ShooterId", TechnicalName = "ShooterId", Description = "EntityID of the Shooter", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "EntityID of the Target", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WeaponId", TechnicalName = "WeaponId", Description = "EntityID of the Weapon", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ProjectileId", TechnicalName = "ProjectileId", Description = "EntityID of the Projectile if it was a bullet hit", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitPos", TechnicalName = "HitPos", Description = "Position of the Hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitDir", TechnicalName = "HitDir", Description = "Direction of the Hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitNormal", TechnicalName = "HitNormal", Description = "Normal of the Hit Impact", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HitType", TechnicalName = "HitType", Description = "Name of the HitType", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Damage", TechnicalName = "Damage", Description = "Damage amout which was caused", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Material", TechnicalName = "Material", Description = "Name of the Material", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:HolsterItem", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Holster", TechnicalName = "Holster", Description = "Holster current item", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHolster", TechnicalName = "UnHolster", Description = "Unholster current item", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Done", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:HovercraftGun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Crysis:HunterBeamSweep", "switching species hostility on/off (makes AI ignore enemies/be ignored)");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Starts shooting", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "BaseDistance", TechnicalName = "BaseDistance", Description = "Average distance around which sweeping will oscillate", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "LeftRightSpeed", TechnicalName = "LeftRightSpeed", Description = "Speed of width oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Width", TechnicalName = "Width", Description = "Amplitude of width oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "NearFarSpeed", TechnicalName = "NearFarSpeed", Description = "Speed of distance oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Distance", TechnicalName = "Distance", Description = "Amplitude of distance oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "Duration", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "targetPos", TechnicalName = "targetPos", Description = "Target shooting position", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Crysis:HunterShootTarget", "switching species hostility on/off (makes AI ignore enemies/be ignored)");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Starts shooting", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Speed of oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Width", TechnicalName = "Width", Description = "Width factor of oscillation", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "Duration", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetAlignSpeed", TechnicalName = "TargetAlignSpeed", Description = "Speed of aligning to target", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "targetPos", TechnicalName = "targetPos", Description = "Target shooting position", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:HunterSweepMOAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Hurricane", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Logic:Indexer", "Whenever a input port is activated, returns the index of that port [1-8]. WARNING: Does not account for multiple activations on different ports!");

            node.Inputs.Add(new FlowNodeItem { Name = "Port1", TechnicalName = "Port1", Description = "Input Port 0", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port2", TechnicalName = "Port2", Description = "Input Port 1", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port3", TechnicalName = "Port3", Description = "Input Port 2", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port4", TechnicalName = "Port4", Description = "Input Port 3", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port5", TechnicalName = "Port5", Description = "Input Port 4", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port6", TechnicalName = "Port6", Description = "Input Port 5", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port7", TechnicalName = "Port7", Description = "Input Port 6", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port8", TechnicalName = "Port8", Description = "Input Port 7", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "PortIndex", TechnicalName = "out", Description = "PortIndex which was triggered [1-8]", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:IndirectLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:InstantAction", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Interpol:Int", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "StartInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "StopInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StartValue", TechnicalName = "StartValue", Description = "Start value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EndValue", TechnicalName = "EndValue", Description = "End value", Type = EFlowNodeItemType.Integer, Value = 255 });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Time in Seconds", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current Value", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:InteractiveEntity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ResetProgress", TechnicalName = "ResetProgress", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetProgress", TechnicalName = "SetProgress", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnedOff", TechnicalName = "TurnedOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnedOn", TechnicalName = "TurnedOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Use", TechnicalName = "Use", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Progress", TechnicalName = "Progress", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnedOff", TechnicalName = "TurnedOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnedOn", TechnicalName = "TurnedOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:InterferenceEffect", "HUD Interference Effect.");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to start effect", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Distortion", TechnicalName = "Distortion", Description = "Distortion Amount", Type = EFlowNodeItemType.Float, Value = 20 });
            node.Inputs.Add(new FlowNodeItem { Name = "Displacement", TechnicalName = "Displacement", Description = "Displacement Amount", Type = EFlowNodeItemType.Float, Value = 10 });
            node.Inputs.Add(new FlowNodeItem { Name = "Alpha", TechnicalName = "Alpha", Description = "Alpha Amount", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Decay", TechnicalName = "Decay", Description = "Decay Amount", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Crysis:ItemAnimation", "Plays an animation on an item.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Play the animation.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ItemId", TechnicalName = "ItemId", Description = "Set item that will play the animation.", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Busy", TechnicalName = "Busy", Description = "Set item as busy while the animation is playing.", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Animation", TechnicalName = "Animation", Description = "Set the animation to be played.", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:ItemSelected", "Tracks the currently selected item of the player. Use [Active] to enable");

            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "Set to active to get notified when a new item was selected", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "ItemClass", TechnicalName = "ItemClass", Description = "Outputs selected item's class", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemName", TechnicalName = "ItemName", Description = "Outputs selected item's name", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ItemId", TechnicalName = "ItemId", Description = "Outputs selected item's entity id", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Input:Key", "FlowNode to catch key inputs. Use only for debugging. It is enabled by default.");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Trigger to enable. Default: Already enabled.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Trigger to disable", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Key", TechnicalName = "Key", Description = "Key name. Leave empty for any.", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "NonDevMode", TechnicalName = "NonDevMode", Description = "If set to true, can be used in Non-Devmode as well [Debugging backdoor]", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Pressed", TechnicalName = "Pressed", Description = "Key pressed.", Type = EFlowNodeItemType.String, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Released", TechnicalName = "Released", Description = "Key released.", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAM", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAMFlashLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAMRifle", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAMRifleFlashLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAW", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LAWScope", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Ladder", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Less", "[out] is true when [A] < [B], false otherwise");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "triggered if out is true", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "triggered if out is false", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Light", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LightMOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Environment:Lighting", "");

            node.Inputs.Add(new FlowNodeItem { Name = "TimeOfDay", TechnicalName = "TimeOfDay", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "SunDirection", TechnicalName = "SunDirection", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Lightning", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Strike", TechnicalName = "Strike", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Strike", TechnicalName = "Strike", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Game:LocalPlayer", "Outputs the local players entity id - NOT USABLE FOR MULTIPLAYER");


            node.Outputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Player entity id", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:LockpickKit", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Misc:Log", "");

            node.Inputs.Add(new FlowNodeItem { Name = "input", TechnicalName = "input", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "message", TechnicalName = "message", Description = "None", Type = EFlowNodeItemType.String, Value = "no message set" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Log:LogInput", "");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "Any value to be logged", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:LookAt", "Activates character Look At IK");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Starts Look at ", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Stops Look at", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "FieldOfView", TechnicalName = "FieldOfView", Description = "LookAt Field of view (Degrees)", Type = EFlowNodeItemType.Float, Value = 90 });
            node.Inputs.Add(new FlowNodeItem { Name = "Blending", TechnicalName = "Blending", Description = "Blending with animation value", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Target", TechnicalName = "Target", Description = "Look at target entity", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetPos", TechnicalName = "TargetPos", Description = "Look at target position", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "LookAtPlayer", TechnicalName = "LookAtPlayer", Description = "When true looks at player", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MGbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MOACAttach", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MOAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MOARAttach", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Multiplayer:MP", "MP MPNode");

            node.Inputs.Add(new FlowNodeItem { Name = "GameEndTime", TechnicalName = "GameEndTime", Description = "Number of seconds remaining at which to trigger the EndGameNear output", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "EnteredGame", TechnicalName = "EnteredGame", Description = "Triggered when local player enters the game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EndGameNear", TechnicalName = "EndGameNear", Description = "Triggered when game-ending condition is near", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EndGameInvalid", TechnicalName = "EndGameInvalid", Description = "Triggered when game-ending condition is invalidated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "GameWon", TechnicalName = "GameWon", Description = "Triggered when local player's team wins the game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "GameLost", TechnicalName = "GameLost", Description = "Triggered when local player's team loses the game", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "GameTied", TechnicalName = "GameTied", Description = "Triggered when neither team wins the game", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Multiplayer:ClientServer", "MP MPNode");


            node.Outputs.Add(new FlowNodeItem { Name = "IsServer", TechnicalName = "IsServer", Description = "Outputs when user is server", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsClient", TechnicalName = "IsClient", Description = "Outputs when user is client", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Multiplayer:SetTeam", "GetTeam MPNode");


            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:MagnitudeVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "vector", TechnicalName = "vector", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "length", TechnicalName = "length", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:MapInfo", "Adds or removes an Entity from the PDA Map.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add", TechnicalName = "Add", Description = "Trigger this port to add Entity to map", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "Trigger this port to remove Entity from map", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Label", TechnicalName = "Label", Description = "Label on the map", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "Type", Description = "Label on the map", Type = EFlowNodeItemType.Integer, Value = 16 });

            node.Outputs.Add(new FlowNodeItem { Name = "Added", TechnicalName = "Added", Description = "Trigger when Entity was added", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Removed", TechnicalName = "Removed", Description = "Trigger when Entity was removed", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Material", "Apply material to the entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "material", TechnicalName = "material", Description = "Name of material to apply", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:MaterialClone", "Clone an Entity's Material and Reset it back to original.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Clone", TechnicalName = "Clone", Description = "Trigger to clone material", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Trigger to reset material", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Slot", TechnicalName = "Slot", Description = "Material Slot", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Cloned", TechnicalName = "Cloned", Description = "Triggered when cloned.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Triggered when reset.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:MaterialLayer", "Enable/Disable Entity Material Layers");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Trigger to enable the layer", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Trigger to disable the layer", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Layer", TechnicalName = "Layer", Description = "Layer to be enabled or disabled", Type = EFlowNodeItemType.Integer, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:MaterialParam", "Set/Get Entity's Material Shader Parameters");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to get current value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Slot", TechnicalName = "Slot", Description = "Material Slot", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SubMtlId", TechnicalName = "SubMtlId", Description = "Sub Material Id", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamFloat", TechnicalName = "ParamFloat", Description = "Float Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Trigger to set Float value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamColor", TechnicalName = "ParamColor", Description = "Color Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "color_ValueColor", TechnicalName = "color_ValueColor", Description = "Trigger to set Color value", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Current Float Value", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ValueColor", TechnicalName = "ValueColor", Description = "Current Color Value", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Engine:MaterialParam", "Set/Get Material's Shader Parameters");

            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Trigger to get current value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "mat_Material", TechnicalName = "mat_Material", Description = "Material Name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "SubMtlId", TechnicalName = "SubMtlId", Description = "Sub Material Id", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamFloat", TechnicalName = "ParamFloat", Description = "Float Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Trigger to set Float value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ParamColor", TechnicalName = "ParamColor", Description = "Color Parameter to be set/get", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "color_ValueColor", TechnicalName = "color_ValueColor", Description = "Trigger to set Color value", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "ValueFloat", TechnicalName = "ValueFloat", Description = "Current Float Value", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ValueColor", TechnicalName = "ValueColor", Description = "Current Color Value", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:MeasureTime", "Node to measure elapsed time.");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Trigger to start measuring", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger to stop measuring", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Started", TechnicalName = "Started", Description = "Triggered on Start", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Stopped", TechnicalName = "Stopped", Description = "Triggered on Stop", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Elapsed", TechnicalName = "Elapsed", Description = "Elapsed time in seconds", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Stats:Memory", "");


            node.Outputs.Add(new FlowNodeItem { Name = "sysmem", TechnicalName = "sysmem", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "videomem_thisframe", TechnicalName = "videomem_thisframe", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "videomem_recently", TechnicalName = "videomem_recently", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "meshmem", TechnicalName = "meshmem", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Mine", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Detonated", TechnicalName = "Detonated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disarmed", TechnicalName = "Disarmed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Detonated", TechnicalName = "Detonated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disarmed", TechnicalName = "Disarmed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MissilePlatform", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MissionHint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MissionObjective", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Completed", TechnicalName = "Completed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Failed", TechnicalName = "Failed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SilentActivate", TechnicalName = "SilentActivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SilentDeactivate", TechnicalName = "SilentDeactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Completed", TechnicalName = "Completed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Failed", TechnicalName = "Failed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "NanoSuit:ModeControl", "NanoSuit ModeControl");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add", TechnicalName = "Add", Description = "Trigger to add mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "Trigger to remove mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "SetDefect", TechnicalName = "SetDefect", Description = "Trigger to set mode defect", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Repair", TechnicalName = "Repair", Description = "Trigger to repair mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Mode", TechnicalName = "Mode", Description = "Mode to add/remove", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Mission:ModifyToken", "Operate on a GameToken - Experimental Friedrich only!");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this input to actually get the game token value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Token", TechnicalName = "gametoken_Token", Description = "Game token to set", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Operation", TechnicalName = "Op", Description = "Operation token = token OP value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "Type", Description = "Type", Type = EFlowNodeItemType.Integer, Value = 4 });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Value to operate with", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OutValue", TechnicalName = "OutValue", Description = "Value of the token", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Environment:MoonDirection", "Set the 3DEngine's Moon Direction");

            node.Inputs.Add(new FlowNodeItem { Name = "Get", TechnicalName = "Get", Description = "Get the current Latitude/Longitude", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Set the Latitude/Longitude", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Latitude", TechnicalName = "Latitude", Description = "Latitude to be set", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Longitude", TechnicalName = "Longitude", Description = "Longitude to be set", Type = EFlowNodeItemType.Float, Value = 35 });

            node.Outputs.Add(new FlowNodeItem { Name = "Latitude", TechnicalName = "Latitude", Description = "Current Latitude", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Longitude", TechnicalName = "Longitude", Description = "Current Longitude", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Movement:MoveEntityTo", "Move an entity to a destination position at a defined speed");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destination", TechnicalName = "Destination", Description = "Destination", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "DynamicUpdate", TechnicalName = "DynamicUpdate", Description = "Dynamic update of Destination [follow-during-movement]", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "speed (m/sec)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EaseDistance", TechnicalName = "EaseDistance", Description = "distance at which the speed is changed (in meters)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Trigger this port to start the movement", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger this port to stop the movement", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Current", TechnicalName = "Current", Description = "Current position", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "DoneTrigger", Description = "Triggered when destination is reached or movement stopped", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Movement:MoveTo", "Move between two positions at a defined speed");

            node.Inputs.Add(new FlowNodeItem { Name = "Destination", TechnicalName = "Destination", Description = "Destination", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "speed (m/sec)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EaseDistance", TechnicalName = "EaseDistance", Description = "distance at which the speed is changed (in meters)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Starts the motion when triggered", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Current", TechnicalName = "Current", Description = "Current position", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Goes to TRUE when the destination is reached", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Mul", "[out] = [A] * [B]");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:MulVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=A*B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out=A*B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=A*B", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MultipleTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "InputTrigger", TechnicalName = "InputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OutputTrigger", TechnicalName = "OutputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "InputTrigger", TechnicalName = "InputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OutputTrigger", TechnicalName = "OutputTrigger", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:Multiplexer", "Selects one of the inputs using the Index and sends it to the output. 3 Different modes! IndexOnly: Only [Index] triggers output. PortsOnly: Only Port[Index] triggers output. Always: Both [Index] and Port[Index] trigger output.");

            node.Inputs.Add(new FlowNodeItem { Name = "Index", TechnicalName = "Index", Description = "Index from 0 to 7", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Mode", TechnicalName = "Mode", Description = "IndexOnly: Only [Index] triggers output. PortsOnly: Only Port[Index] triggers output. Always: Both [Index] and Port[Index] trigger output.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port0", TechnicalName = "Port0", Description = "Input Port 0", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port1", TechnicalName = "Port1", Description = "Input Port 1", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port2", TechnicalName = "Port2", Description = "Input Port 2", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port3", TechnicalName = "Port3", Description = "Input Port 3", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port4", TechnicalName = "Port4", Description = "Input Port 4", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port5", TechnicalName = "Port5", Description = "Input Port 5", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port6", TechnicalName = "Port6", Description = "Input Port 6", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Port7", TechnicalName = "Port7", Description = "Input Port 7", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Output", TechnicalName = "out", Description = "multiplexer output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicEndTheme", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Sound:MusicLogicControl", "Control MusicLogic");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enables functionality", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disables functionality", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Start MusicLogic", TechnicalName = "Start", Description = "Starts MusicLogic", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop MusicLogic", TechnicalName = "Stop", Description = "Stops MusicLogic", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Set all values", TechnicalName = "SetAll", Description = "Sets all input values", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Add all values", TechnicalName = "AddAll", Description = "Adds all input values", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Set AI-Intensity", TechnicalName = "SetAI", Description = "Sets AI-Intensity to input value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add AI-Intensity", TechnicalName = "AddAI", Description = "Adds input value to AI-Intensity", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set Player-Intensity", TechnicalName = "SetPlayer", Description = "Sets Player-Intensity to input value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add Player-Intensity", TechnicalName = "AddPlayer", Description = "Adds input value to Player-Intensity", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set Game-Intensity", TechnicalName = "SetGame", Description = "Sets Game-Intensity to input value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add Game-Intensity", TechnicalName = "AddGame", Description = "Adds input value to Game-Intensity", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set Allow-Change", TechnicalName = "SetChange", Description = "Sets Allow-Change to input value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Add Allow-Change", TechnicalName = "AddChange", Description = "Adds input value to Allow-Change", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set Multiplier", TechnicalName = "SetMultiplier", Description = "Sets multiplier for global tweaking", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set AI Multiplier", TechnicalName = "SetAIMultiplier", Description = "Sets multiplier for AI tweaking", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicLogicTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicMoodSelector", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ResetDefaultMood", TechnicalName = "ResetDefaultMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetDefaultMood", TechnicalName = "SetDefaultMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetMood", TechnicalName = "SetMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ResetDefaultMood", TechnicalName = "ResetDefaultMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SetDefaultMood", TechnicalName = "SetDefaultMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SetMood", TechnicalName = "SetMood", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicPlayPattern", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "PlayPattern", TechnicalName = "PlayPattern", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicStinger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:MusicThemeSelector", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EndTheme", TechnicalName = "EndTheme", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetTheme", TechnicalName = "SetTheme", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SetTheme", TechnicalName = "SetTheme", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Sound:MusicVolume", "Fade Game Music Volume");

            node.Inputs.Add(new FlowNodeItem { Name = "StartFade", TechnicalName = "StartFade", Description = "Start fading from Source to Target value.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StopFade", TechnicalName = "StopFade", Description = "Stop fading.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeTime", TechnicalName = "FadeTime", Description = "Fade time. Can be 0 for instant setting.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SourceValue", TechnicalName = "SourceValue", Description = "Source Value. If -1, uses current.", Type = EFlowNodeItemType.Float, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetValue", TechnicalName = "TargetValue", Description = "Target Value. Default=0 -> FadeOut", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when Fade is over.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current value", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:NOT", "Inverts [in] port, [out] port will output true when [in] is false, and will output false when [in] is true");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "out = not in", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = not in", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:NanoSuit", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "NanoSuit:NanoSuit", "NanoSuit Node");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "Trigger to select Cloak Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Strength", TechnicalName = "Strength", Description = "Trigger to select Strength Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Defense", TechnicalName = "Defense", Description = "Trigger to select Defense Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Trigger to select Speed Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Energy", TechnicalName = "Energy", Description = "Set Energy", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CloakLevel", TechnicalName = "CloakLevel", Description = "Set cloak level [1-3]", Type = EFlowNodeItemType.Integer, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "BreakHUD", TechnicalName = "BreakHUD", Description = "Trigger to break the HUD, causing it to disappear", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "RebootHUD", TechnicalName = "RebootHUD", Description = "Trigger to reboot the HUD, causing it to appear", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "Triggered on Default Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Strength", TechnicalName = "Strength", Description = "Triggered on Strength Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Defense", TechnicalName = "Defense", Description = "Triggered on Defense Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Triggered on Speed Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Energy", TechnicalName = "Energy", Description = "Current Energy", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CloakLevel", TechnicalName = "CloakLevel", Description = "Current cloak level [set when Cloak mode is active]", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "NanoSuit:NanoSuitGet", "NanoSuitGet Node");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to get current NanoSuit values", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "Triggered on Cloak Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Strength", TechnicalName = "Strength", Description = "Triggered on Strength Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Defense", TechnicalName = "Defense", Description = "Triggered on Defense Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Triggered on Speed Mode", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Energy", TechnicalName = "Energy", Description = "Current Energy", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CloakLevel", TechnicalName = "CloakLevel", Description = "Current cloak level [1-3]", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:NightVision", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:NightVision", "HUD NightVision");

            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Activate NightVision", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "Deactivate NightVision", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "Triggered when NightVision is activated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "Triggered when NightVision is deactivated", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:NoAiming", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Dont Aim!", TechnicalName = "Enable", Description = "Stops animation playing", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Math:Noise1D", "");

            node.Inputs.Add(new FlowNodeItem { Name = "x", TechnicalName = "x", Description = "value to sample noise at", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "frequency", TechnicalName = "frequency", Description = "scale factor for input value", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "amplitude", TechnicalName = "amplitude", Description = "range of noise values", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = amp * Noise1D(frequency * x)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Math:Noise3D", "");

            node.Inputs.Add(new FlowNodeItem { Name = "v", TechnicalName = "v", Description = "position to sample noise at", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "frequency", TechnicalName = "frequency", Description = "scale factor for input vector", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "amplitude", TechnicalName = "amplitude", Description = "range of noise values", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = amp * Noise3D(frequency * v)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:NormalizeVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "vector", TechnicalName = "vector", Description = "||out||=1", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "||out||=1", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "length", TechnicalName = "lenght", Description = "||out||=1", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:OR", "Do logical operation on input ports and outputs result to [out] port. True port is triggered if the result was true, otherwise the false port is triggered.");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "triggered if out is true", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "triggered if out is false", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Objective", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:Objectives", "HUD Objective support for Goal and MainObjective");

            node.Inputs.Add(new FlowNodeItem { Name = "SetGoal", TechnicalName = "SetGoal", Description = "Set Goal Objective", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "mission_Goal", TechnicalName = "mission_Goal", Description = "Goal Objective", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "SetMainObjective", TechnicalName = "SetMain", Description = "Set Main Objective", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "MainObjective", TechnicalName = "mission_Main", Description = "Main Objective", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:OffHand", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Crysis:OffHandAnimation", "Plays an animation on an item.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Play the animation.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ItemId", TechnicalName = "ItemId", Description = "Set item that will play the animation.", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Busy", TechnicalName = "Busy", Description = "Set item as busy while the animation is playing.", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Animation", TechnicalName = "Animation", Description = "Set the animation to be played.", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:OffhandFlashbang", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:OffhandGrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:OffhandNanoDisruptor", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:OffhandSmoke", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:OnChange", "Only send [in] value into the [out] when it is different from the previous value");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Logic:Once", "Once - Triggers only once and passes from activated Input port to output port [Out].");

            node.Inputs.Add(new FlowNodeItem { Name = "Input1", TechnicalName = "Input1", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input2", TechnicalName = "Input2", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input3", TechnicalName = "Input3", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input4", TechnicalName = "Input4", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input5", TechnicalName = "Input5", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Input6", TechnicalName = "Input6", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Reset (and allow new trigger)", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "Output", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:OverlayMsg", "Show Overlay Messages on the HUD");

            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Show the message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Hide the message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Message", TechnicalName = "Message", Description = "Message to show", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "PosX", TechnicalName = "PosX", Description = "PosX", Type = EFlowNodeItemType.Integer, Value = 400 });
            node.Inputs.Add(new FlowNodeItem { Name = "PosY", TechnicalName = "PosY", Description = "PosY", Type = EFlowNodeItemType.Integer, Value = 300 });
            node.Inputs.Add(new FlowNodeItem { Name = "Color", TechnicalName = "Color", Description = "Color", Type = EFlowNodeItemType.Vector, Value = "1,1,1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Timeout", TechnicalName = "Timeout", Description = "How long to show message", Type = EFlowNodeItemType.Float, Value = 3 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Camera:OverrideFOV", "Override Camera's FieldOfView. Cutscene ONLY!");

            node.Inputs.Add(new FlowNodeItem { Name = "SetFOV", TechnicalName = "SetFOV", Description = "Trigger to override Camera's FieldOfView.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "GetFOV", TechnicalName = "GetFOV", Description = "Trigger to get current Camera's FieldOfView.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ResetFOV", TechnicalName = "ResetFOV", Description = "Trigger to reset FieldOfView to default value.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "CurFOV", TechnicalName = "CurFOV", Description = "Current FieldOfView", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ResetDone", TechnicalName = "ResetDone", Description = "Triggered after Reset", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:PDAControl", "Control the PDA/Map");

            node.Inputs.Add(new FlowNodeItem { Name = "OpenMap", TechnicalName = "Open", Description = "Open Map", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "CloseMap", TechnicalName = "Close", Description = "Close Map", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Tab", TechnicalName = "Tab", Description = "Tab to open.", Type = EFlowNodeItemType.Integer, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "ShowObjectives", TechnicalName = "ShowObjectives", Description = "Show SP Objectives", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "HideObjectives", TechnicalName = "HideObjectives", Description = "Hide SP Objecvies", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "MapOpened", TechnicalName = "Opened", Description = "Triggered when PDA was opened", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "MapClosed", TechnicalName = "Closed", Description = "Triggered when PDA was closed", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TabChanged", TechnicalName = "TabChanged", Description = "Triggered when PDA Tab changed. Map=1", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectivesOpened", TechnicalName = "ObjectivesOpened", Description = "Triggered when Objectives are shown", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ObjectivesClosed", TechnicalName = "ObjectivesClosed", Description = "Triggered when Objectives are hidden again", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:PDAScanner", "HUD/PDA Entity Scanning");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Trigger this port to start scanning", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger this port to stop scanning", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Pos", TechnicalName = "Pos", Description = "Origin of scanning", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "Radius for scanning", Type = EFlowNodeItemType.Float, Value = 100 });
            node.Inputs.Add(new FlowNodeItem { Name = "KeepExisting", TechnicalName = "KeepExisting", Description = "Keep already scanned entities on the radar.", Type = EFlowNodeItemType.Boolean, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Parachute", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Inventory:ParachuteControl", "Parachute ModeControl");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Open", TechnicalName = "Open", Description = "Trigger to open", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Close", TechnicalName = "Close", Description = "Trigger to close", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "Trigger to remove", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FreeFall", TechnicalName = "FreeFall", Description = "Trigger to force Player into FreeFall state", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ParentId", "Parent entity ID");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "parentId", TechnicalName = "parentId", Description = "Entity ID of the parent entity", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ParticleEffect", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Restart", TechnicalName = "Restart", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Restart", TechnicalName = "Restart", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:PerceptionScale", "Scales the agent's sensitivity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Desired perception scale is set when this node is activated", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Visual", TechnicalName = "Scale", Description = "Desired visual perception scale factor", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Audio", TechnicalName = "Audio", Description = "Desired audio perception scale factor", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Perimeter", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Physics:PhysicsEnable", "Enables/Disables Physics");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable Physics for target entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disable Physics for target entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AI_Enable", TechnicalName = "AI_Enable", Description = "Enable AI for target entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AI_Disable", TechnicalName = "AI_Disable", Description = "Disable AI for target entity", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Animations:PlayAnimation", "Plays an Animation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Starts the animation", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Stops the animation", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "anim_Animation", TechnicalName = "anim_Animation", Description = "Animation name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "BlendInTime", TechnicalName = "BlendInTime", Description = "Blend in time", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Loop", TechnicalName = "Loop", Description = "When True animation will loop and will never stop", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ForceUpdate", TechnicalName = "ForceUpdate", Description = "When True animation will play even if not visible", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "PauseAnimGraph", TechnicalName = "PauseAnimGraph", Description = "When True animation graph will not be involved in animation until this animation ends", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ControlMovement", TechnicalName = "ControlMovement", Description = "When True this animation will control the entities movement", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "AlmostDone", TechnicalName = "AlmostDone", Description = "Send an event when animation is almost finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Animations:PlayCGA", "Plays a CGA Animation");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CGA_File", TechnicalName = "CGA_File", Description = "CGA Filename", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "anim_CGA_Animation", TechnicalName = "anim_CGA_Animation", Description = "CGA Animation name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Starts the animation", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Set to TRUE when animation is finished", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Dialog:PlayDialog", "Play a Dialog - WIP");

            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "Trigger to play the Dialog", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger to stop the Dialog", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Dialog", TechnicalName = "dialog_Dialog", Description = "Dialog to play", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StartLine", TechnicalName = "StartLine", Description = "Line to start Dialog from", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AIInterrupt", TechnicalName = "AIInterrupt", Description = "AI interrupt behaviour: Always, MediumAlerted, Never", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AwareDistance", TechnicalName = "AwareDistance", Description = "Max. Distance Player is considered as listening. 0.0 disables check.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AwareAngle", TechnicalName = "AwareAngle", Description = "Max. View Angle Player is considered as listening. 0.0 disables check", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AwareTimeout", TechnicalName = "AwareTimeout", Description = "TimeOut until non-aware Player aborts dialog. [Effective pnly if AwareDistance or AwareAngle != 0]", Type = EFlowNodeItemType.Float, Value = 3 });
            node.Inputs.Add(new FlowNodeItem { Name = "Flags", TechnicalName = "Flags", Description = "Dialog Playback Flags", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 1", TechnicalName = "Actor1", Description = "Actor 1 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 2", TechnicalName = "Actor2", Description = "Actor 2 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 3", TechnicalName = "Actor3", Description = "Actor 3 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 4", TechnicalName = "Actor4", Description = "Actor 4 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 5", TechnicalName = "Actor5", Description = "Actor 5 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 6", TechnicalName = "Actor6", Description = "Actor 6 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 7", TechnicalName = "Actor7", Description = "Actor 7 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Actor 8", TechnicalName = "Actor8", Description = "Actor 8 [EntityID]", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Started", TechnicalName = "Started", Description = "Triggered when the Dialog started.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "DoneFOA", Description = "Triggered when the Dialog ended [Finished OR Aborted].", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Finished", TechnicalName = "Done", Description = "Triggered when the Dialog finished normally.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Aborted", TechnicalName = "Aborted", Description = "Triggered when the Dialog was aborted.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "PlayerAbort", TechnicalName = "PlayerAbort", Description = "Triggered when the Dialog was aborted because Player was not aware. 1=OutOfRange 2=OutOfView", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "AIAbort", TechnicalName = "AIAbort", Description = "Triggered when the Dialog was aborted because AI got alerted.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ActorDied", TechnicalName = "ActorDied", Description = "Triggered when the Dialog was aborted because an Actor died.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "LastLine", TechnicalName = "LastLine", Description = "Last line when dialog was aborted.", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CurLine", TechnicalName = "CurLine", Description = "Current line. Triggered whenever a line starts.", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Animations:PlaySequence", "Plays a Trackview Sequence");

            node.Inputs.Add(new FlowNodeItem { Name = "Sequence", TechnicalName = "seq_Sequence_File", Description = "Name of the Sequence", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StartTrigger", TechnicalName = "Trigger", Description = "Starts the sequence", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StopTrigger", TechnicalName = "Stop", Description = "Stops the sequence", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "BreakOnStop", TechnicalName = "BreakOnStop", Description = "If set to 'true', stopping the sequence doesn't jump to end.", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "BlendPosSpeed", TechnicalName = "BlendPosSpeed", Description = "Speed at which position gets blended into animation.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "BlendRotSpeed", TechnicalName = "BlendRotSpeed", Description = "Speed at which rotation gets blended into animation.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "PerformBlendOut", TechnicalName = "PerformBlendOut", Description = "If set to 'true' the cutscene will blend out after it has finished to the new view (please reposition player when 'Started' happens).", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Started", TechnicalName = "Started", Description = "Triggered when sequence is started", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when sequence is stopped [either via StopTrigger or aborted via Code]", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Finished", TechnicalName = "Finished", Description = "Triggered when sequence finished normally", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Aborted", TechnicalName = "Aborted", Description = "Triggered when sequence is aborted (Stopped and BreakOnStop true or via Code)", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Debug, "Sound:PlaySound", "Play a sound on an entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable/Disable SoundNode", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "sound_SoundName", Description = "Name of Sound to play", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "PlayTrigger", Description = "Play", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "StopTrigger", Description = "Stop", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Loop", TechnicalName = "Loop", Description = "Loop the sound", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Once", TechnicalName = "Once", Description = "Play only once", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Volume", TechnicalName = "Volume", Description = "Volume (dynamic)", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "InnerRadius", TechnicalName = "InnerRadius", Description = "Inner Radius", Type = EFlowNodeItemType.Float, Value = 2 });
            node.Inputs.Add(new FlowNodeItem { Name = "OuterRadius", TechnicalName = "OuterRadius", Description = "Outer Radius", Type = EFlowNodeItemType.Float, Value = 10 });
            node.Inputs.Add(new FlowNodeItem { Name = "Voice", TechnicalName = "Voice", Description = "If True this is a voice sound", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play/Stop[deprecated]", TechnicalName = "Play", Description = "Play/Stop playing", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "IsPlaying", TechnicalName = "IsPlaying", Description = "True if Sound is playing (triggered on changed)", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered if Sound has stopped playing", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Sound:PlaySoundEvent", "Play a sound event on an entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable/Disable SoundEventNode", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundEvent", TechnicalName = "sound_SoundEvent", Description = "Name of SoundEvent to play", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "PlayTrigger", Description = "Play", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "StopTrigger", Description = "Stop", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Voice", TechnicalName = "Voice", Description = "If True this is a voice sound", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Once", TechnicalName = "Once", Description = "Play only once", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "MaxRadius", TechnicalName = "MaxRadius", Description = "Debug information about the effect radius", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsPlaying", TechnicalName = "IsPlaying", Description = "True if SoundEvent is playing (triggered on changed)", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered if SoundEvent has stopped playing", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Player", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Game:PlayerLink", "Linking the Player to an Entity (with FreeLook)");

            node.Inputs.Add(new FlowNodeItem { Name = "Link", TechnicalName = "Link", Description = "Link the Player to Target Entity", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Unlink", TechnicalName = "Unlink", Description = "Unlink the Player (from any Entity)", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Target", TechnicalName = "Target", Description = "Target Entity Id", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DrawPlayer", TechnicalName = "DrawPlayer", Description = "Draw the Player", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "KeepTransfromDetach", TechnicalName = "KeepTransfromDetach", Description = "Keep Transformation on Detach", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Linked", TechnicalName = "Linked", Description = "Trigger if Linked", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Unlinked", TechnicalName = "Unlinked", Description = "Trigger if Unlinked", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:PlayerModelChanger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ChangePlayerModel", TechnicalName = "ChangePlayerModel", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ChangePlayerModel", TechnicalName = "ChangePlayerModel", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:PlayerProximityTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Game:PlayerStaging", "Staging of the Player - ViewLimits and Position Lock");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ViewLimitDir", TechnicalName = "ViewLimitDir", Description = "ViewLimitDir", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "InLocalSpace", TechnicalName = "InLocalSpace", Description = "ViewLimit Vector is in Local Space or World Space", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "ViewLimitYaw", TechnicalName = "ViewLimitYaw", Description = "ViewLimitYaw (0.0=FreeLook, 0.001=Lock)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ViewLimitPitch", TechnicalName = "ViewLimitPitch", Description = "ViewLimitPitch (0.0=Freelook, 0.001=Lock)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "LockPlayer", TechnicalName = "LockPlayer", Description = "Lock the player's position", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TryStance", TechnicalName = "TryStance", Description = "Try to set Stance on Locking [works only if Player was linked beforehand]", Type = EFlowNodeItemType.Integer, Value = -1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Trigger for Chaining", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Log:Plot", "Plot x,y coordinate pairs in a graph on screen");

            node.Inputs.Add(new FlowNodeItem { Name = "plotX", TechnicalName = "plotX", Description = "x-coordinate to plot", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "plotY", TechnicalName = "plotY", Description = "y-coordinate to plot", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "posX", TechnicalName = "posX", Description = "x-coordinate of graph", Type = EFlowNodeItemType.Float, Value = 50 });
            node.Inputs.Add(new FlowNodeItem { Name = "posY", TechnicalName = "posY", Description = "y-coordinate of graph", Type = EFlowNodeItemType.Float, Value = 100 });
            node.Inputs.Add(new FlowNodeItem { Name = "width", TechnicalName = "width", Description = "width of graph", Type = EFlowNodeItemType.Float, Value = 400 });
            node.Inputs.Add(new FlowNodeItem { Name = "height", TechnicalName = "height", Description = "height of graph", Type = EFlowNodeItemType.Float, Value = 300 });
            node.Inputs.Add(new FlowNodeItem { Name = "maxPointAge", TechnicalName = "maxPointAge", Description = "maximum age of a point on screen in seconds", Type = EFlowNodeItemType.Float, Value = 10 });
            node.Inputs.Add(new FlowNodeItem { Name = "color", TechnicalName = "color", Description = "Color to plot with", Type = EFlowNodeItemType.Vector, Value = "255,255,255" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Plover", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Math:PortCounter", "Counts the number of activated 'in' ports. Allows designers to, for example, trigger an action when 7 out of 12 entities have died");

            node.Inputs.Add(new FlowNodeItem { Name = "reset", TechnicalName = "reset", Description = "Trigger this to reset the total and port counters", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "portThreshold", TechnicalName = "portThreshold", Description = "When portCount reaches portThreshold, portTrigger is activated", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "totalThreshold", TechnicalName = "totalThreshold", Description = "When totalCount reaches totalThreshold, totalTrigger is activated", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in01", TechnicalName = "in01", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in02", TechnicalName = "in02", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in03", TechnicalName = "in03", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in04", TechnicalName = "in04", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in05", TechnicalName = "in05", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in06", TechnicalName = "in06", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in07", TechnicalName = "in07", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in08", TechnicalName = "in08", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in09", TechnicalName = "in09", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in10", TechnicalName = "in10", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in11", TechnicalName = "in11", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in12", TechnicalName = "in12", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in13", TechnicalName = "in13", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in14", TechnicalName = "in14", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in15", TechnicalName = "in15", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "in16", TechnicalName = "in16", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "portCount", TechnicalName = "portCount", Description = "Total number of ports that have been set since last reset. Only counts each port once. (0 to 16)", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "totalCount", TechnicalName = "totalCount", Description = "Sum of all the times any of the ports have been set, since last reset.", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "portTrigger", TechnicalName = "portTrigger", Description = "triggered when port count reaches port threshold.", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "totalTrigger", TechnicalName = "totalTrigger", Description = "triggered when total count reaches total threshold.", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:PortalEntity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Die", TechnicalName = "Die", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "IsDead", TechnicalName = "IsDead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Die", TechnicalName = "Die", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsDead", TechnicalName = "IsDead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Engine:PortalSwitch", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXBloodSplats", "Bloodsplats");

            node.Inputs.Add(new FlowNodeItem { Name = "BloodSplats_Active", TechnicalName = "BloodSplats_Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "BloodSplats_Type", TechnicalName = "BloodSplats_Type", Description = "0 - Red, human. 1 - Blue, alien.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "BloodSplats_Amount", TechnicalName = "BloodSplats_Amount", Description = "value less than 0 makes effect more transparent: 0=invisible, 0.5=half-transparent, 1=normal transparency.", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "BloodSplats_Spawn", TechnicalName = "BloodSplats_Spawn", Description = "False - (default) effect disabled. True - effect enabled.", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "BloodSplats_Scale", TechnicalName = "BloodSplats_Scale", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXGlittering", "Glittering");

            node.Inputs.Add(new FlowNodeItem { Name = "Glittering_Active", TechnicalName = "Glittering_Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXGlobal", "Sets the global PostFX params");

            node.Inputs.Add(new FlowNodeItem { Name = "Global_Brightness", TechnicalName = "Global_Brightness", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_Contrast", TechnicalName = "Global_Contrast", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_Saturation", TechnicalName = "Global_Saturation", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_Sharpening", TechnicalName = "Global_Sharpening", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_ColorC", TechnicalName = "Global_ColorC", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_ColorM", TechnicalName = "Global_ColorM", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_ColorY", TechnicalName = "Global_ColorY", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_ColorK", TechnicalName = "Global_ColorK", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Global_ColorHue", TechnicalName = "Global_ColorHue", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXGlow", "Glow");

            node.Inputs.Add(new FlowNodeItem { Name = "Glow_Active", TechnicalName = "Glow_Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Glow_Scale", TechnicalName = "Glow_Scale", Description = "None", Type = EFlowNodeItemType.Float, Value = 0.5 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXScreenFrost", "ScreenFrost");

            node.Inputs.Add(new FlowNodeItem { Name = "ScreenFrost_Active", TechnicalName = "ScreenFrost_Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ScreenFrost_Amount", TechnicalName = "ScreenFrost_Amount", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ScreenFrost_CenterAmount", TechnicalName = "ScreenFrost_CenterAmount", Description = "None", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:PostFXWaterDroplets", "WaterDroplets");

            node.Inputs.Add(new FlowNodeItem { Name = "WaterDroplets_Active", TechnicalName = "WaterDroplets_Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WaterDroplets_Amount", TechnicalName = "WaterDroplets_Amount", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Power", "");

            node.Inputs.Add(new FlowNodeItem { Name = "base", TechnicalName = "base", Description = "out=base^power", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "power", TechnicalName = "power", Description = "out=base^power", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=base^power", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:PrecacheCamera", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:PressurizedObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:ProgressBar", "HUD Binoculars");

            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Trigger to show progress bar", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Trigger to hide progress bar", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Progress", TechnicalName = "Progress", Description = "Progress from 0-100", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "text_Text", TechnicalName = "text_Text", Description = "Text to display", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "PosX", TechnicalName = "PosX", Description = "PosX", Type = EFlowNodeItemType.Float, Value = 400 });
            node.Inputs.Add(new FlowNodeItem { Name = "PosY", TechnicalName = "PosY", Description = "PosY", Type = EFlowNodeItemType.Float, Value = 300 });
            node.Inputs.Add(new FlowNodeItem { Name = "Align", TechnicalName = "Align", Description = "Alignment (Top or Bottom)", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "LockingAsset", TechnicalName = "LockingAsset", Description = "Use TAC Launcher locking asset instead.", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "Triggered when shown", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "Triggered when hidden", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Progress", TechnicalName = "Progress", Description = "Current progress value", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ProximityTrigger", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enter", TechnicalName = "Enter", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Leave", TechnicalName = "Leave", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enter", TechnicalName = "Enter", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "IsInside", TechnicalName = "IsInside", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Leave", TechnicalName = "Leave", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Sender", TechnicalName = "Sender", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:RadarControl", "Adds or removes a TeamMate/Normal entity from the Radar.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AddToRadar", TechnicalName = "AddToRadar", Description = "Trigger this port to force adding entity to radar", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "RemoveFromRadar", TechnicalName = "RemoveFromRadar", Description = "Trigger this port to force removing entity from radar", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "AddTeamMate", TechnicalName = "AddTeamMate", Description = "Trigger this port to add TeamMate entity to radar", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "RemoveTeamMate", TechnicalName = "RemoveTeamMate", Description = "Trigger this port to remove TeamMate entity from radar", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:RadarJammer", "HUD Radar Jammer");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Trigger to activate", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "Trigger to deactivate", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "Radius", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "Triggered when activated", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "Triggered when deactivated", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RadarKit", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:RadarTexture", "HUD Radar Texture Background");

            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Trigger to activate", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "MapID", TechnicalName = "MapID", Description = "Texture ID 1-3", Type = EFlowNodeItemType.Integer, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "Triggered when activated", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:RainDrops", "Rain drops effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "RainDrops_Amount", Description = "Sets rain drops visibility", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn Time Distance", TechnicalName = "RainDrops_SpawnTimeDistance", Description = "Sets rain drops spawn time distance", Type = EFlowNodeItemType.Float, Value = 0.34999999 });
            node.Inputs.Add(new FlowNodeItem { Name = "Size", TechnicalName = "RainDrops_Size", Description = "Sets rain drops size", Type = EFlowNodeItemType.Float, Value = 5 });
            node.Inputs.Add(new FlowNodeItem { Name = "Size Variation", TechnicalName = "RainDrops_SizeVariation", Description = "Sets rain drops size variation", Type = EFlowNodeItemType.Float, Value = 2.5 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RaisingWater", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "RaiseWater", TechnicalName = "RaiseWater", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "StopWater", TechnicalName = "StopWater", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "RaiseWater", TechnicalName = "RaiseWater", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StopWater", TechnicalName = "StopWater", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "WaterEnded", TechnicalName = "WaterEnded", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Random", "");

            node.Inputs.Add(new FlowNodeItem { Name = "generate", TechnicalName = "generate", Description = "generate a random number between min and max", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "min", TechnicalName = "min", Description = "minimum value of the random number", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "max", TechnicalName = "max", Description = "maximum value of the random number", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "random number between min and max", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "outRounded", TechnicalName = "outRounded", Description = "[out] but rounded to next integer value", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:RandomDelay", "This node will delay passing the signal from the [In] to [Out] for a random amount of time in the interval [MinDelay,MaxDelay]");

            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Value to be passed after delay time", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "MinDelay", TechnicalName = "MinDelay", Description = "Minimum random delay time in seconds", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "MaxDelay", TechnicalName = "MaxDelay", Description = "Maximum random delay time in seconds", Type = EFlowNodeItemType.Float, Value = 2 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:RandomSelect", "RandomSelect - Passes the activated input value to a random amount [outMin <= random <= outMax] outputs.");

            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Input", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "outMin", TechnicalName = "outMin", Description = "Min number of outputs to activate.", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "outMax", TechnicalName = "outMax", Description = "Max number of outputs to activate.", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out1", TechnicalName = "Out1", Description = "Output1", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out2", TechnicalName = "Out2", Description = "Output2", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out3", TechnicalName = "Out3", Description = "Output3", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out4", TechnicalName = "Out4", Description = "Output4", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out5", TechnicalName = "Out5", Description = "Output5", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out6", TechnicalName = "Out6", Description = "Output6", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RandomSoundVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Logic:RandomTrigger", "RandomTrigger - On each [In] trigger, triggers one of the connected outputs in random order.");

            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Input", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "Reset randomness", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out1", TechnicalName = "Out1", Description = "Output1", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out2", TechnicalName = "Out2", Description = "Output2", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out3", TechnicalName = "Out3", Description = "Output3", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out4", TechnicalName = "Out4", Description = "Output4", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out5", TechnicalName = "Out5", Description = "Output5", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out6", TechnicalName = "Out6", Description = "Output6", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out7", TechnicalName = "Out7", Description = "Output6", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Out8", TechnicalName = "Out8", Description = "Output6", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered after all [connected] outputs have triggered", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Physics:RayCast", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "go", TechnicalName = "go", Description = "Perform Raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "direction", TechnicalName = "direction", Description = "Direction of Raycast", Type = EFlowNodeItemType.Vector, Value = "0,1,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "maxLength", TechnicalName = "maxLength", Description = "Maximum length of Raycast", Type = EFlowNodeItemType.Float, Value = 10 });
            node.Inputs.Add(new FlowNodeItem { Name = "position", TechnicalName = "position", Description = "Ray start position, relative to entity", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "nohit", TechnicalName = "nohit", Description = "Triggered if NO object was hit by raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "hit", TechnicalName = "hit", Description = "Triggered if an object was hit by raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "direction", TechnicalName = "direction", Description = "Actual direction of the cast ray (transformed by entity rotation", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "distance", TechnicalName = "distance", Description = "Distance to object hit", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "hitpoint", TechnicalName = "hitpoint", Description = "Position the ray hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "normal", TechnicalName = "normal", Description = "Normal of the surface at the hitpoint", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "entity", TechnicalName = "entity", Description = "Entity which was hit", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Physics:RayCastCamera", "Perform a raycast relative to the camera");

            node.Inputs.Add(new FlowNodeItem { Name = "go", TechnicalName = "go", Description = "Perform Raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "offset", TechnicalName = "offset", Description = "Ray start position, relative to camera", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "maxLength", TechnicalName = "maxLength", Description = "Maximum length of Raycast", Type = EFlowNodeItemType.Float, Value = 10 });

            node.Outputs.Add(new FlowNodeItem { Name = "nohit", TechnicalName = "nohit", Description = "Triggered if NO object was hit by raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "hit", TechnicalName = "hit", Description = "Triggered if an object was hit by raycast", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "direction", TechnicalName = "direction", Description = "Actual direction of the cast ray (transformed by entity rotation", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "distance", TechnicalName = "distance", Description = "Distance to object hit", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "hitpoint", TechnicalName = "hitpoint", Description = "Position the ray hit", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "normal", TechnicalName = "normal", Description = "Normal of the surface at the hitpoint", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "entity", TechnicalName = "entity", Description = "Entity which was hit", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:RealTime", "");


            node.Outputs.Add(new FlowNodeItem { Name = "hours", TechnicalName = "hours", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "minutes", TechnicalName = "minutes", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "seconds", TechnicalName = "seconds", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Reciprocal", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=1/A", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=1/A", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:ReciprocalVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "vector", TechnicalName = "vector", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "length", TechnicalName = "length", Description = "1.0 / length[vector]", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RefWeapon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Reflex", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Remainder", "[out] = remainder of [A]/[B]");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:RemoveAllAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "Connect event here to remove all the ammo", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "true if the ammo was actually removed, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:RemoveAllItems", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Connect event here to remove all items from inventory", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "True when done successfully", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:RemoveItem", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "Connect event here to remove the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Item", TechnicalName = "item", Description = "The item to add to the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ItemType", TechnicalName = "ItemType", Description = "Select from which items to choose", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "true if the item was actually removed, false if the player did not have the item", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:RenderParams", "Set render specific parameters");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Opacity", TechnicalName = "Opacity", Description = "Set opacity amount", Type = EFlowNodeItemType.Float, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RepairKit", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Inventory:RestorePlayerInventory", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to restore Player's Inventory.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ReverbVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RigidBody", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "AddImpulse", TechnicalName = "AddImpulse", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "OnTouch", TechnicalName = "OnTouch", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "AddImpulse", TechnicalName = "AddImpulse", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnTouch", TechnicalName = "OnTouch", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RigidBodyEx", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "RagDollize", TechnicalName = "RagDollize", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SwitchToMaterial1", TechnicalName = "SwitchToMaterial1", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SwitchToMaterial2", TechnicalName = "SwitchToMaterial2", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SwitchToMaterialOriginal", TechnicalName = "SwitchToMaterialOriginal", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableUsable", TechnicalName = "DisableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableUsable", TechnicalName = "EnableUsable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "RagDollized", TechnicalName = "RagDollized", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Rope", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ChainBroken", TechnicalName = "ChainBroken", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ChainBroken", TechnicalName = "ChainBroken", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:RopeEntity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Break", TechnicalName = "Break", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Remove", TechnicalName = "Remove", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Movement:RotateEntity", "Rotate at a defined speed");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Speed (degrees/sec)", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Paused", TechnicalName = "Paused", Description = "Pause the motion when true", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "CoordSys", TechnicalName = "Ref", Description = "RotationAxis in World or Local Space", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Current", TechnicalName = "Current", Description = "Current Rotation in Degrees", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CurrentRad", TechnicalName = "CurrentRad", Description = "Current Rotation in Radian", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Movement:RotateEntityTo", "Rotate an entity during a defined period of time");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destination", TechnicalName = "Destination", Description = "Destination", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "DynamicUpdate", TechnicalName = "DynamicUpdate", Description = "Dynamic update of Destination [follow-during-movement]", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Duration in seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Trigger this port to start the movement", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger this port to stop the movement", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Current", TechnicalName = "Current", Description = "Current Rotation in Degrees", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CurrentRad", TechnicalName = "CurrentRad", Description = "Current Rotation in Radian", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "DoneTrigger", Description = "Triggered when destination rotation is reached or rotation stopped", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Movement:RotateTo", "Rotates between two angles during a defined period of time");

            node.Inputs.Add(new FlowNodeItem { Name = "Destination", TechnicalName = "Destination", Description = "Destination", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Duration in seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Starts the rotation when triggered", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Current", TechnicalName = "Current", Description = "Current Rotation", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Goes to TRUE when the destination is reached", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SCAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SCARIncendiaryAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SCARNormalAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SCARTagAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SCARTutorial", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Sound:SFXVolume", "Fade Game SFX Volume");

            node.Inputs.Add(new FlowNodeItem { Name = "StartFade", TechnicalName = "StartFade", Description = "Start fading from Source to Target value.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StopFade", TechnicalName = "StopFade", Description = "Stop fading.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeTime", TechnicalName = "FadeTime", Description = "Fade time. Can be 0 for instant setting.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SourceValue", TechnicalName = "SourceValue", Description = "Source Value. If -1, uses current.", Type = EFlowNodeItemType.Float, Value = -1 });
            node.Inputs.Add(new FlowNodeItem { Name = "TargetValue", TechnicalName = "TargetValue", Description = "Target Value. Default=0 -> FadeOut", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when Fade is over.", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current value", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SMG", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SOCOM", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SOCOMSilencer", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "System:SaveGame", "SaveGame for Autosave");


            node.Outputs.Add(new FlowNodeItem { Name = "SaveDone", TechnicalName = "SaveDone", Description = "Triggered when saved", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "LoadDone", TechnicalName = "LoadDone", Description = "Triggered when loaded", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:ScaleVec3", "[out] = [vector] * [scale]");

            node.Inputs.Add(new FlowNodeItem { Name = "vector", TechnicalName = "vector", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "scale", TechnicalName = "scale", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ScoutMOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ScoutSearchBeam", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ScoutSingularity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Scout MOAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "CrysisFX:ScreenFader", "Controls Screen Fading.");

            node.Inputs.Add(new FlowNodeItem { Name = "FadeGroup", TechnicalName = "FadeGroup", Description = "Fade Group [0-3]", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeIn", TechnicalName = "FadeIn", Description = "Fade back from the specified color back to normal screen", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeOut", TechnicalName = "FadeOut", Description = "Fade the screen to the specified color", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "UseCurColor", TechnicalName = "UseCurColor", Description = "If checked, use the current color as Source color. Otherwise use [FadeColor] as Source color and Target color.", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeInTime", TechnicalName = "FadeInTime", Description = "Duration of fade in", Type = EFlowNodeItemType.Float, Value = 2 });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeOutTime", TechnicalName = "FadeOutTime", Description = "Duration of fade out", Type = EFlowNodeItemType.Float, Value = 2 });
            node.Inputs.Add(new FlowNodeItem { Name = "color_FadeColor", TechnicalName = "color_FadeColor", Description = "Target Color to fade to", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "tex_TextureName", TechnicalName = "tex_TextureName", Description = "Texture Name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "FadedIn", TechnicalName = "FadedIn", Description = "FadedIn", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "FadedOut", TechnicalName = "FadedOut", Description = "FadedOut", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CurColor", TechnicalName = "CurColor", Description = "Current Faded Color", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Game:ScriptCommand", "");

            node.Inputs.Add(new FlowNodeItem { Name = "t_Activate", TechnicalName = "t_Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Command", TechnicalName = "Command", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Math:Select2", "Modulo of 2 from [in] port decides which out port sends true event");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "Number that will select index of output that generates event", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "one", TechnicalName = "one", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "two", TechnicalName = "two", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:SelectItem", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Select the item", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Item", TechnicalName = "Item", Description = "Item to select, has to be in inventory", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "True when executed", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "HUD:SendEvent", "Sends an event to the HUD system. EventParam is an event-specific string");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to send the event to the HUD", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EventName", TechnicalName = "EventName", Description = "Name of event to send to the HUD", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "EventParam", TechnicalName = "EventParam", Description = "Parameter of the event [event-specific]", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:ServerTime", "");

            node.Inputs.Add(new FlowNodeItem { Name = "basetime", TechnicalName = "basetime", Description = "Set base time in seconds. All values output will be relative to this time.", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "period", TechnicalName = "period", Description = "Set period of the timer in seconds. Timer will reset each time after reaching this value.", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "secs", TechnicalName = "secs", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "msecs", TechnicalName = "msecs", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "period", TechnicalName = "period", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:SetAmmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Connect event here to set the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "The type of ammo to set on the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "Amount", Description = "The amount of ammo to set on the inventory", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "true if the ammo was actually set, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Inventory:SetAmmoEx", "Extended version of SetAmmo, for use on arbitrary entities possessing an Inventory.");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Connect event here to set the ammo", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Ammo", TechnicalName = "Ammo", Description = "The type of ammo to set on the inventory", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "Amount", Description = "The amount of ammo to set on the inventory", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "true if inventory was found and ammo was set, false otherwise", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:SetColor", "Send input value to the output when event on set port is received.");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Trigger to output", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "color_In", TechnicalName = "color_In", Description = "Color to be set on output", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Mission:SetGameToken", "Set the value of a game token");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this input to actually set the game token value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Token", TechnicalName = "gametoken_Token", Description = "Game token to set", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Value to set", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "OutValue", TechnicalName = "OutValue", Description = "Value which was set (debug)", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:SetNumber", "Send input value to the output when event on set port is received");

            node.Inputs.Add(new FlowNodeItem { Name = "set", TechnicalName = "set", Description = "Send value to output when receiving event on this port", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "Value to be set on output", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "BuildingController:SetPower", "Used to set the power status of a building");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Set the power status. Pass in TRUE to turn power on, FALSE to turn power off.", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetWithValue", TechnicalName = "SetWithValue", Description = "Set the power status using what is specified in Value", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Team name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Class name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Power status to use", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when status is set. Returns building's new power status.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SetProperty", "Change entity property value");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "activate", TechnicalName = "activate", Description = "Trigger it to set the property.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "name", TechnicalName = "name", Description = "Property Name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "number", TechnicalName = "number", Description = "Property Float Value", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "perArchetype", TechnicalName = "perArchetype", Description = "False: property is a per instance property True: property is a per archetype property.", Type = EFlowNodeItemType.Boolean, Value = 1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Legacy, "Math:SetString", "Deprecated. Use String:SetString instead");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Send string [In] to [Out]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "String to be set on [Out]. Will also be set in Initialize", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "String:SetString", "Set String Value");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Send string [In] to [Out]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "String to be set on [Out]. Will also be set in Initialize", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:SetVec3", "Send input value to the output when event on set port is received.");

            node.Inputs.Add(new FlowNodeItem { Name = "Set", TechnicalName = "Set", Description = "Trigger to output", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "In", TechnicalName = "In", Description = "Value to be set on output", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "Out", TechnicalName = "Out", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Game:SetVehicleAltitudeLimit", "Set Vehicle's Maximum Altitude");

            node.Inputs.Add(new FlowNodeItem { Name = "SetLimit", TechnicalName = "SetLimit", Description = "Trigger to set limit", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Limit", TechnicalName = "Limit", Description = "Altitude limit in meters", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ShiTen", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ShootingTarget", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activated", TechnicalName = "Activated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivated", TechnicalName = "Deactivated", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "PlayerOne", TechnicalName = "PlayerOne", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "PlayerTwo", TechnicalName = "PlayerTwo", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Shotgun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:ShowHUDMessage", "Displays a localized message on the Flash-HUD.");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger this port to show the message", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "text_Message", TechnicalName = "text_Message", Description = "Localized label of message to display", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Pos", TechnicalName = "Pos", Description = "Position where to show", Type = EFlowNodeItemType.Integer, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "clr_Color", TechnicalName = "clr_Color", Description = "Color", Type = EFlowNodeItemType.Vector, Value = "1,1,1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "If Pos is Middle: Time to show the message. 0.0 -> forever until cleared", Type = EFlowNodeItemType.Float, Value = 3 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SideWinder", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SideWinder AscMod", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Harvester:Signal", "Use to send a signal to a Harvester.");

            node.Inputs.Add(new FlowNodeItem { Name = "Signal", TechnicalName = "Signal", Description = "Make the signal", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Signal to send", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when signal is made", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Silencer", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "HUD:SilhouetteOutline", "HUD Silhouette Shader");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Trigger to activate. This sets a permanent silhouette (until removed), overwriting automated ones.", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "Trigger to deactivate", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Color", TechnicalName = "Color", Description = "Color", Type = EFlowNodeItemType.Vector, Value = "1,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SimpleIndirectLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SimpleLight", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:SinCos", "");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "sin", TechnicalName = "sin", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "cos", TechnicalName = "cos", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SinglePlayer", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SingularityCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SingularityCannonWarrior", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Trigonomtry:Sinus", "Outputs sinus of the input in degrees");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "out=sinus(in) in degrees", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=sinus(in) in degrees", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SmartObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Used", TechnicalName = "Used", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SmartObjectCondition", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:SmartObjectEvent", "Triggers a smart object event");

            node.Inputs.Add(new FlowNodeItem { Name = "soevent_event", TechnicalName = "soevent_event", Description = "smart object event to be triggered", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "trigger", TechnicalName = "trigger", Description = "triggers the smart object event", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "userId", TechnicalName = "userId", Description = "if used will limit the event on only one user", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "objectId", TechnicalName = "objectId", Description = "if used will limit the event on only one object", Type = EFlowNodeItemType.Entity, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "userId", TechnicalName = "userId", Description = "the used selected by smart object rules", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "objectId", TechnicalName = "objectId", Description = "the object selected by smart object rules", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "start", TechnicalName = "ruleName", Description = "activated if a matching rule was found", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "noRule", TechnicalName = "noRule", Description = "activated if no matching rule was found", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "AI:SmartObjectHelper", "Outputs AI's attention target parameters");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "soclass_class", TechnicalName = "soclass_class", Description = "Smart Object Class for which the helper should be defined", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "sonavhelper_helper", TechnicalName = "sonavhelper_helper", Description = "Helper name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "pos", TechnicalName = "pos", Description = "Position of the Smart Object Helper in world coordinates", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fwd", TechnicalName = "fwd", Description = "Forward direction of the Smart Object Helper in world coordinates", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "up", TechnicalName = "up", Description = "Up direction of the Smart Object Helper in world coordinates", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SmokeGrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SniperScope", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SoundEventSpot", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Once", TechnicalName = "Once", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Sound:SoundMood", "Apply a sound mood");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enables functionality", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disables functionality", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "mood_SoundMood", TechnicalName = "mood_SoundMood", Description = "Name of SoundMood to apply", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeInTime", TechnicalName = "FadeInTime", Description = "Time to fade-in in Seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeInValue", TechnicalName = "FadeInValue", Description = "FadeValue in Seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TriggerFadeIn", TechnicalName = "TriggerFadeIn", Description = "Start to fade-in", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "FadeOutTime", TechnicalName = "FadeOutTime", Description = "Time to fade-out in Seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TriggerFadeOut", TechnicalName = "TriggerFadeOut", Description = "Start to fade-out", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SoundMoodVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Fade", TechnicalName = "Fade", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SoundSpot", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SoundSupressor", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnOff", TechnicalName = "TurnOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnOn", TechnicalName = "TurnOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnAlien", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnCivilian", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnCoordinator", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnGroup", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnGrunt", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnHunter", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "GrabVTOL", TechnicalName = "GrabVTOL", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ReleaseVTOL", TechnicalName = "ReleaseVTOL", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnObserver", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Effects:SpawnParticleEffect", "");

            node.Inputs.Add(new FlowNodeItem { Name = "t_Activate", TechnicalName = "t_Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Position", TechnicalName = "Position", Description = "None", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Effect", TechnicalName = "Effect", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnPoint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnScout", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpawnTrooper", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableCloaked", TechnicalName = "EnableCloaked", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Kill", TechnicalName = "Kill", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Cloak", TechnicalName = "Cloak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Dead", TechnicalName = "Dead", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableCloaked", TechnicalName = "EnableCloaked", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawned", TechnicalName = "Spawned", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:SpectatorPoint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Sqrt", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=sqrt(A)", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=sqrt(A)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Misc:Start", "");

            node.Inputs.Add(new FlowNodeItem { Name = "InGame", TechnicalName = "InGame", Description = "Start will Trigger in PureGameMode", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "InEditor", TechnicalName = "InEditor", Description = "Start will Trigger in EditorGameMode", Type = EFlowNodeItemType.Boolean, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "output", TechnicalName = "output", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:StopAnimation", "Controls the AnimationGraph of the attached entity");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop!", TechnicalName = "Stop", Description = "Stops animation playing", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:Stopwatch", "A helpful stopwatch for figuring out how long it takes to do something!");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Start the stopwatch", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Stop the stopwatch and calculate how much time has passed", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Timeout Value", TechnicalName = "Timeout", Description = "How long the stopwatch should go before automatically stopping. Keep at \"0\" for infinite.", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when the stopwatch stops", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Inventory:StorePlayerInventory", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to store Player's Inventory.", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when done.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:Sub", "[out] = [A] - [B]");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:SubVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out=A-B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out=A-B", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=A-B", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Switch", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Switch", TechnicalName = "Switch", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnedOff", TechnicalName = "TurnedOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TurnedOn", TechnicalName = "TurnedOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnedOff", TechnicalName = "TurnedOff", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TurnedOn", TechnicalName = "TurnedOn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:SynchronizeTwoAnimations", "Synchronize two animations on two entities");

            node.Inputs.Add(new FlowNodeItem { Name = "Entity1", TechnicalName = "Entity1", Description = "Entity1", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Entity2", TechnicalName = "Entity2", Description = "Entity2", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "anim_Animation1", TechnicalName = "anim_Animation1", Description = "Animation1", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "anim_Animation2", TechnicalName = "anim_Animation2", Description = "Animation2", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ResyncTime", TechnicalName = "ResyncTime", Description = "ResyncTime", Type = EFlowNodeItemType.Float, Value = 0.2 });
            node.Inputs.Add(new FlowNodeItem { Name = "MaxPercentSpeedChange", TechnicalName = "MaxPercentSpeedChange", Description = "MaxPercentSpeedChange", Type = EFlowNodeItemType.Float, Value = 10 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TACCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TACGun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TACGun Fleet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TacticalAttachment", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TagPoint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Trigonomtry:Tangens", "Outputs tangens of the input in degrees");

            node.Inputs.Add(new FlowNodeItem { Name = "in", TechnicalName = "in", Description = "out=tangens(in) in degrees", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out=tangens(in) in degrees", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TankCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Tank singularityprojectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TeamInstantAction", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TeamRandomSoundVolume", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Radius", TechnicalName = "Radius", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TeamSoundSpot", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Once", TechnicalName = "Once", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Play", TechnicalName = "Play", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SoundName", TechnicalName = "SoundName", Description = "None", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Misc:TestScripted", "");

            node.Inputs.Add(new FlowNodeItem { Name = "input", TechnicalName = "input", Description = "None", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "output", TechnicalName = "output", Description = "None", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:TiberiumField", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Load", TechnicalName = "Load", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Loaded", TechnicalName = "Loaded", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:Time", "");

            node.Inputs.Add(new FlowNodeItem { Name = "paused", TechnicalName = "paused", Description = "When set to true will pause time output", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "seconds", TechnicalName = "seconds", Description = "Outputs the current time in seconds.", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "tick", TechnicalName = "tick", Description = "Outputs event at this port every frame.", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:TimeOfDay", "Set/Get TimeOfDay and Speed");

            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "TimeOfDay to set (in hours 0-24)", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetTime", TechnicalName = "Set", Description = "Trigger to Set TimeOfDay to [Time]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ForceUpdate", TechnicalName = "ForceUpdate", Description = "Force Immediate Update of Sky if true. Only in Special Cases!", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "GetTime", TechnicalName = "Get", Description = "Trigger to Get TimeOfDay to [CurTime]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "Speed to bet set (via [SetSpeed]", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "SetSpeed", TechnicalName = "SetSpeed", Description = "Trigger to set TimeOfDay Speed to [Speed]", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "GetSpeed", TechnicalName = "GetSpeed", Description = "Trigger to get TimeOfDay Speed to [CurSpeed]", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "CurTime", TechnicalName = "CurTime", Description = "Current TimeOfDay (set when [GetTime] is triggered)", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "CurSpeed", TechnicalName = "CurSpeed", Description = "Current TimeOfDay Speed (set when [GetSpeed] is triggered)", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Time:TimeOfDayTrigger", "TimeOfDay Trigger");

            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "Whether trigger is enabled", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Time when to trigger", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Triggered when TimeOfDay has been reached. Outputs current timeofday", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Time:Timer", "Timer node will output count from min to max, ticking at the specified period of time");

            node.Inputs.Add(new FlowNodeItem { Name = "period", TechnicalName = "period", Description = "Tick period in seconds", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "min", TechnicalName = "min", Description = "Minimal timer output value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "max", TechnicalName = "max", Description = "Maximal timer output value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "paused", TechnicalName = "paused", Description = "Timer will be paused when set to true", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Math:ToBoolean", "Output true or false depending on the input ports");

            node.Inputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "Will output true when event on this port received", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "Will output false when event on this port received", Type = EFlowNodeItemType.Any, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "Output true or false depending on the input ports", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vec3:ToVec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "x", TechnicalName = "x", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "y", TechnicalName = "y", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "z", TechnicalName = "z", Description = "None", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "vec3", TechnicalName = "vec3", Description = "None", Type = EFlowNodeItemType.Vector, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Crysis:TornadoWander", "Will make a Tornado Wander around");

            node.Inputs.Add(new FlowNodeItem { Name = "Entity", TechnicalName = "Entity", Description = "Choose Entity", Type = EFlowNodeItemType.Entity, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Activation", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Target", TechnicalName = "Target", Description = "Target", Type = EFlowNodeItemType.String, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Sends 1 when done", Type = EFlowNodeItemType.Boolean, Value = 0 });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Animations:TriggerOnKeyTime", "Synchronize two animations on two entities");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "anim_Animation", TechnicalName = "anim_Animation", Description = "Animation1", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "TriggerTime", TechnicalName = "TriggerTime", Description = "TriggerTime", Type = EFlowNodeItemType.Float, Value = 0.2 });

            node.Outputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Send an event when animation is finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Harvester:Turn", "Use to turn the harvester to a new facing on the spot.");

            node.Inputs.Add(new FlowNodeItem { Name = "Turn", TechnicalName = "Turn", Description = "Turn to face the specified degree", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Face Degree", TechnicalName = "FaceDeg", Description = "Degree to face, with 0 being forward in vehicle's local space", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "Speed", Description = "How fast the harvester can turn, degrees per second", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TimeOut", TechnicalName = "TimeOut", Description = "Set how long the harvester may attempt to turn before timing out", Type = EFlowNodeItemType.Float, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when harvester is at or passes the degree of facing", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Triggered when harvester begins to turn", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Timed Out", TechnicalName = "TimedOut", Description = "Triggered when harvester times out and did not complete the turn", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Turtles", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:USCoaxialGun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:USTankCannon", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US apc", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US hovercraft", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US ltv", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US smallboat", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ReleaseBreak", TechnicalName = "ReleaseBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SetBreak", TechnicalName = "SetBreak", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US tank", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US transportVTOL", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Debug", TechnicalName = "Debug", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US trolley", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:US vtol", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Debug", TechnicalName = "Debug", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableEngine", TechnicalName = "DisableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "DisableMovement", TechnicalName = "DisableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableEngine", TechnicalName = "EnableEngine", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "EnableMovement", TechnicalName = "EnableMovement", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:Unload", "unloads vehicle");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Sync", TechnicalName = "sink", Description = "for synchronization only", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Cancel", TechnicalName = "Cancel", Description = "cancels execution", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Seat", TechnicalName = "Seat", Description = "seat(s) to be unloaded", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "done", TechnicalName = "done", Description = "action done", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "succeed", TechnicalName = "succeed", Description = "action done successfully", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "fail", TechnicalName = "fail", Description = "action failed", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Advanced, "Math:UpDownCounter", "Implements an up/down counter");

            node.Inputs.Add(new FlowNodeItem { Name = "Preset", TechnicalName = "Preset", Description = "Preset value", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "HighLimit", TechnicalName = "HighLimit", Description = "Upper limit", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "LowLimit", TechnicalName = "LowLimit", Description = "Low limit", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Dec", TechnicalName = "Dec", Description = "Decrement", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Inc", TechnicalName = "Inc", Description = "Increment", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Wrap", TechnicalName = "Wrap", Description = "The counter will wrap if TRUE", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "counter output", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Interpol:Vec3", "");

            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "StartInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "StopInterpol", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "StartValue", TechnicalName = "StartValue", Description = "Start value", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "EndValue", TechnicalName = "EndValue", Description = "End value", Type = EFlowNodeItemType.Vector, Value = "1,1,1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Time", TechnicalName = "Time", Description = "Time in Seconds", Type = EFlowNodeItemType.Float, Value = 1 });

            node.Outputs.Add(new FlowNodeItem { Name = "Value", TechnicalName = "Value", Description = "Current Value", Type = EFlowNodeItemType.Vector, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Done", TechnicalName = "Done", Description = "Triggered when finished", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleDamage", "handle vehicle damage");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "HitTrigger", TechnicalName = "HitTrigger", Description = "trigger which cause the vehicle to receive damages", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "HitValue", TechnicalName = "HitValue", Description = "hit value which the vehicle will receive when HitTrigger is set", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "HitPosition", TechnicalName = "HitPosition", Description = "local position at which the vehicle will receive the hit", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "HitRadius", TechnicalName = "HitRadius", Description = "radius of the hit", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Indestructible", TechnicalName = "Indestructible", Description = "Trigger true to set vehicle to indestructible, false to reset.", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "HitType", TechnicalName = "HitType", Description = "an hit type which should be known by the GameRules", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "Damaged", TechnicalName = "Damaged", Description = "hit value received by the vehicle which caused some damage", Type = EFlowNodeItemType.Float, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "vehicle gets destroyed", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hit", TechnicalName = "Hit", Description = "hit value received by the vehicle which may or may not cause damage", Type = EFlowNodeItemType.Float, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleGaussMounted", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleHonk", "Use a vehicle's honk");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to honk", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "Duration in seconds", Type = EFlowNodeItemType.Float, Value = 2 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleLights", "Toggle vehicle lights");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Lights", TechnicalName = "Lights", Description = "Lights to be activated", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "Activate lights", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "Deactivate lights", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOAC", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOACAttach", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOACMounted", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOAR", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOARAttach", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleMOARMounted", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleMoveActionMult", "add multipliers to vehicle movement actions");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleMovement", "Handle vehicle movement");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "warmupEngineTrigger", TechnicalName = "warmupEngineTrigger", Description = "Warmup the vehicle engine", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "zeroMass", TechnicalName = "zeroMass", Description = "Zero vehicle mass to make it static (this is usually a crude hack, don't use it unless you absolutely have to).", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "restoreMass", TechnicalName = "restoreMass", Description = "Restore the vehicles mass.", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehiclePartDetached", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehiclePassenger", "Handle vehicle passengers");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ActorInTrigger", TechnicalName = "ActorInTrigger", Description = "Forces actor [ActorId] to get inside a vehicle, if a seat is available", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ActorOutTrigger", TechnicalName = "ActorOutTrigger", Description = "Forces passenger [ActorId] to get out of a vehicle", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ActorId", TechnicalName = "ActorId", Description = "Entity ID of the actor which is used", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SeatId", TechnicalName = "SeatId", Description = "Seat ID of the preferred seat where place the new passenger", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "ActorIn", TechnicalName = "ActorIn", Description = "Triggered when ANY Actor got in. Outputs it's EntityId.", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ActorOut", TechnicalName = "ActorOut", Description = "Triggered when ANY Actor got out. Outputs it's EntityId.", Type = EFlowNodeItemType.Entity, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleRocketLauncher", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleSeat", "handle vehicle seats");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Seat", TechnicalName = "seatId", Description = "seatId (optional, use instead of seatName)", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "seatName", TechnicalName = "seatName", Description = "the name of the seat which should be requested (optional, use instead of seatId)", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "isDriverSeat", TechnicalName = "isDriverSeat", Description = "used to select the driver seat (optional).", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "lock", TechnicalName = "lock", Description = "used to lock/unlock the selected seat.", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "seatId", TechnicalName = "seatId", Description = "the seat id selected by the input values", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "passengerId", TechnicalName = "passengerId", Description = "the entity id of the current passenger on the seat, if there's any", Type = EFlowNodeItemType.Integer, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleSeatSerializer", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleShiTenV2", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleSingularity", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleSpawnPoint", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Active", TechnicalName = "Active", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Spawn", TechnicalName = "Spawn", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Vehicle:VehicleTurret", "handle vehicle turret");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "trigger the turret to be rotated", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "seatId", TechnicalName = "seatId", Description = "id of the seat which can rotate the turret", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "aimAngles", TechnicalName = "aimAngles", Description = "aiming angles for the turret", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "aimPos", TechnicalName = "aimPos", Description = "world position at which we want to aim the turret", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VehicleUSMachinegun", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Entity:VideoPlayer", "Interface to VideoPlayer in DynTexture");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Slot", TechnicalName = "Slot", Description = "Material Slot", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SubMtlId", TechnicalName = "SubMtlId", Description = "Sub Material Id", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "TexSlot", TechnicalName = "TexSlot", Description = "Texture Slot", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Start", TechnicalName = "Start", Description = "Trigger to start", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Stop", TechnicalName = "Stop", Description = "Trigger to stop", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Pause", TechnicalName = "Pause", Description = "Trigger to pause", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "UnPause", TechnicalName = "UnPause", Description = "Trigger to unpause", Type = EFlowNodeItemType.Any, Value = null });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:ViewDist", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "BuildingController:ViewListener", "Used to listen for view-specific events from a Building Controller");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Turn listening on/off", Type = EFlowNodeItemType.Boolean, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Team", TechnicalName = "Team", Description = "Team name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Class", TechnicalName = "Class", Description = "Class name", Type = EFlowNodeItemType.String, Value = null });

            node.Outputs.Add(new FlowNodeItem { Name = "InView", TechnicalName = "InView", Description = "Triggered when controller is in view by local client", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OutOfView", TechnicalName = "OutOfView", Description = "Triggered when controller is no loner in view by local client", Type = EFlowNodeItemType.Any, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Camera:ViewShake", "Camera View Shake node");

            node.Inputs.Add(new FlowNodeItem { Name = "Trigger", TechnicalName = "Trigger", Description = "Trigger to start shaking", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Restrict", TechnicalName = "Restrict", Description = "Restriction", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "View", TechnicalName = "View", Description = "Which view to use. FirstPerson or Current (might be Trackview).", Type = EFlowNodeItemType.Integer, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "GroundOnly", TechnicalName = "GroundOnly", Description = "Apply shake only when the player is standing on the ground", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Angle", TechnicalName = "Angle", Description = "Shake Angles", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Shift", TechnicalName = "Shift", Description = "Shake shifting", Type = EFlowNodeItemType.Vector, Value = "0,0,0" });
            node.Inputs.Add(new FlowNodeItem { Name = "Duration", TechnicalName = "Duration", Description = "Duration", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Frequency", TechnicalName = "Frequency", Description = "Frequency. Can be changed dynamically.", Type = EFlowNodeItemType.Float, Value = 10 });
            node.Inputs.Add(new FlowNodeItem { Name = "Randomness", TechnicalName = "Randomness", Description = "Randomness", Type = EFlowNodeItemType.Float, Value = 0.1 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:VolumeObject", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Show", TechnicalName = "Show", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.WIP, "Image:VolumetricScattering", "Volumetric scattering effect");

            node.Inputs.Add(new FlowNodeItem { Name = "Enabled", TechnicalName = "Enabled", Description = "Enables node", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Amount", TechnicalName = "VolumetricScattering_Amount", Description = "Sets volumetric scattering amount", Type = EFlowNodeItemType.Float, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Tilling", TechnicalName = "VolumetricScattering_Tilling", Description = "Sets volumetric scattering tilling", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Speed", TechnicalName = "VolumetricScattering_Speed", Description = "Sets volumetric scattering animation speed", Type = EFlowNodeItemType.Float, Value = 1 });
            node.Inputs.Add(new FlowNodeItem { Name = "Color", TechnicalName = "clr_VolumetricScattering_Color", Description = "Sets volumetric scattering amount", Type = EFlowNodeItemType.Vector, Value = "0.60000002,0.75,1" });
            node.Inputs.Add(new FlowNodeItem { Name = "Type", TechnicalName = "VolumetricScattering_Type", Description = "Set volumetric scattering type", Type = EFlowNodeItemType.Integer, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Warrior", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DebugPhaseTwo", TechnicalName = "DebugPhaseTwo", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ReadyCannons", TechnicalName = "ReadyCannons", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Reset", TechnicalName = "Reset", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "ScoutHack", TechnicalName = "ScoutHack", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "HatchDamage", TechnicalName = "HatchDamage", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "HatchDestroyed", TechnicalName = "HatchDestroyed", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Interior_Destroyed", TechnicalName = "Interior_Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "PhaseTwoStart", TechnicalName = "PhaseTwoStart", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Reminder", TechnicalName = "Reminder", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SC1_Destroyed", TechnicalName = "SC1_Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SC1_Id", TechnicalName = "SC1_Id", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SC2_Destroyed", TechnicalName = "SC2_Destroyed", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SC2_Id", TechnicalName = "SC2_Id", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ScoutWaves_Defeated", TechnicalName = "ScoutWaves_Defeated", Description = "None", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StartFire_1", TechnicalName = "StartFire_1", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "StartFire_2", TechnicalName = "StartFire_2", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "TargetId", TechnicalName = "TargetId", Description = "None", Type = EFlowNodeItemType.Entity, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Turrets_Destroyed", TechnicalName = "Turrets_Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:WarriorMOARTurret", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "DisableTurret", TechnicalName = "DisableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "EnableTurret", TechnicalName = "EnableTurret", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Destroyed", TechnicalName = "Destroyed", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Hide", TechnicalName = "Hide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "UnHide", TechnicalName = "UnHide", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:WarriorSingularityProjectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:WaterKillEvent", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "RemoveShark", TechnicalName = "RemoveShark", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "SpawnShark", TechnicalName = "SpawnShark", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "RemoveShark", TechnicalName = "RemoveShark", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "SpawnShark", TechnicalName = "SpawnShark", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Weapon:WeaponListener", "Listens on [WeaponId] (or players [WeaponClass], or as fallback current players weapon) and triggers OnShoot when shot.");

            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "Enable Listener", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "Disable Listener", Type = EFlowNodeItemType.Any, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "WeaponId", TechnicalName = "WeaponId", Description = "Listener will be set on this weapon if active", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "WeaponClass", TechnicalName = "WeaponClass", Description = "Use this if you want to specify the players weapon by name", Type = EFlowNodeItemType.String, Value = null });
            node.Inputs.Add(new FlowNodeItem { Name = "ShootCount", TechnicalName = "Ammo", Description = "Number of times the listener can be triggered. 0 means infinite", Type = EFlowNodeItemType.Integer, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "OnShoot", TechnicalName = "OnShoot", Description = "OnShoot", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "ShootsLeft", TechnicalName = "AmmoLeft", Description = "Shoots left", Type = EFlowNodeItemType.Integer, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnMelee", TechnicalName = "OnMelee", Description = "Triggered on melee attack", Type = EFlowNodeItemType.Any, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "OnDropped", TechnicalName = "OnDropped", Description = "Triggered when weapon was dropped.", Type = EFlowNodeItemType.String, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:Wind", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Disable", TechnicalName = "Disable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Enable", TechnicalName = "Enable", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:WindArea", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "Activate", TechnicalName = "Activate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "Deactivate", TechnicalName = "Deactivate", Description = "None", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Logic:XOR", "Do logical operation on input ports and outputs result to [out] port. True port is triggered if the result was true, otherwise the false port is triggered.");

            node.Inputs.Add(new FlowNodeItem { Name = "A", TechnicalName = "A", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });
            node.Inputs.Add(new FlowNodeItem { Name = "B", TechnicalName = "B", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = 0 });

            node.Outputs.Add(new FlowNodeItem { Name = "out", TechnicalName = "out", Description = "out = A op B", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "true", TechnicalName = "true", Description = "triggered if out is true", Type = EFlowNodeItemType.Boolean, Value = null });
            node.Outputs.Add(new FlowNodeItem { Name = "false", TechnicalName = "false", Description = "triggered if out is false", Type = EFlowNodeItemType.Boolean, Value = null });
            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:a2ahomingmissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:a2ahomingmissile ascmod", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:a2ghomingmissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:acmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:alienmount acmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:avexplosive", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:bullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:bunkerbuster", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:c4explosive", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:claymoreexplosive", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:dumbaamissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:empgrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:exocetmissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:explosivegrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:explosivegrenadeAI", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:flashbang", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:fybullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:gaussbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:gausstankbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:heavyacmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:helicoptermissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:homingmissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:homingmoac", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:hurricanebullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:incendiarybullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:lightacmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:lightbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:rock", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:rocket", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:rubberbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:scargrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:scoutsingularityprojectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:shotgunshell", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:singularityprojectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:smgbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:smokegrenade", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:sniperbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tacbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tacgunprojectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tacgunprojectileEx", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tacprojectile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tagbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tank125", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tank30", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:tankaa", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:towmissile", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:turret rocket", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:turretacmo", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:vtol20", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            node = new FlowNode(EFlowNodeCategory.Approved, "Entity:vtolbullet", "");

            node.Inputs.Add(new FlowNodeItem { Name = "entityId", TechnicalName = "entityId", Description = "Changes the attached entity dynamically", Type = EFlowNodeItemType.Entity, Value = 0 });

            toReturn.Add(node);


            return toReturn;
        }

    }
}
